diff --git a/StgSharp.C/hash.c b/StgSharp.C/hash.c index a4256a4d..c9ab3b06 100644 --- a/StgSharp.C/hash.c +++ b/StgSharp.C/hash.c @@ -15,7 +15,7 @@ INTERNAL int SSCDECL city_hash_simplify_sse(byte const *str, int const length) for (; ptr < end; ptr += 4) { hash = _mm_crc32_u32(hash, *(uint32_t *)ptr); } - for (; ptr < end; ptr++) { + for (; ptr < end; ptr++) { hash = _mm_crc32_u16(hash, *ptr); } } else { diff --git a/StgSharp.C/x64/Debug/StgSharp.C.Build.CppClean.log b/StgSharp.C/x64/Debug/StgSharp.C.Build.CppClean.log index b7b69115..de590052 100644 --- a/StgSharp.C/x64/Debug/StgSharp.C.Build.CppClean.log +++ b/StgSharp.C/x64/Debug/StgSharp.C.Build.CppClean.log @@ -1,30 +1,25 @@ -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\build\stgsharp.c.bsc -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\vc143.pdb -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\vc143.idb -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharpc.sbr -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharpc.obj -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharpc.cod -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\intrinsic.sbr -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\intrinsic.obj -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\intrinsic.cod -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\string.sbr -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\string.obj -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\string.cod -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\mat4.sbr -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\mat4.obj -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\mat4.cod -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\vector.sbr -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\vector.obj -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\vector.cod -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\hash.sbr -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\hash.obj -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\hash.cod +c:\users\youmu\onedrive - msft\大学\毕业设计\graduationproject\build\stgsharp.c.bsc d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stb_image.sbr d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stb_image.obj d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stb_image.cod d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\mat2.sbr d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\mat2.obj d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\mat2.cod +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\hash.sbr +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\hash.obj +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\hash.cod +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\string.sbr +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\string.obj +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\string.cod +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\mat4.sbr +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\mat4.obj +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\mat4.cod +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharpc.sbr +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharpc.obj +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharpc.cod +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\vector.sbr +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\vector.obj +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\vector.cod d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\mat3.sbr d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\mat3.obj d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\mat3.cod @@ -34,18 +29,23 @@ d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\st d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\dllmain.sbr d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\dllmain.obj d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\dllmain.cod -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\build\stgsharp.c.dll -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\build\stgsharp.c.pdb -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\build\stgsharp.c.lib -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\build\stgsharp.c.exp +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\intrinsic.sbr +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\intrinsic.obj +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\intrinsic.cod +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\vc143.pdb +c:\users\youmu\onedrive - msft\大学\毕业设计\graduationproject\build\stgsharp.c.dll +c:\users\youmu\onedrive - msft\大学\毕业设计\graduationproject\build\stgsharp.c.pdb +c:\users\youmu\onedrive - msft\大学\毕业设计\graduationproject\build\stgsharp.c.lib +c:\users\youmu\onedrive - msft\大学\毕业设计\graduationproject\build\stgsharp.c.exp d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharp.c.ilk +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\vc143.idb d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharp.c.tlog\bscmake.command.1.tlog d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharp.c.tlog\bscmake.read.1.tlog d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharp.c.tlog\bscmake.write.1.tlog +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharp.c.tlog\cl.12408.write.1.tlog d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharp.c.tlog\cl.command.1.tlog d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharp.c.tlog\cl.items.tlog d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharp.c.tlog\cl.read.1.tlog -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharp.c.tlog\cl.write.1.tlog d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharp.c.tlog\link.command.1.tlog d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharp.c.tlog\link.read.1.tlog d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharp.c.tlog\link.secondary.1.tlog diff --git a/StgSharp.C/x64/Debug/StgSharp.C.ilk b/StgSharp.C/x64/Debug/StgSharp.C.ilk index aee14176..59ae8162 100644 Binary files a/StgSharp.C/x64/Debug/StgSharp.C.ilk and b/StgSharp.C/x64/Debug/StgSharp.C.ilk differ diff --git a/StgSharp.C/x64/Debug/StgSharp.C.tlog/CL.command.1.tlog b/StgSharp.C/x64/Debug/StgSharp.C.tlog/CL.command.1.tlog index 66bef181..f8eb8bfb 100644 Binary files a/StgSharp.C/x64/Debug/StgSharp.C.tlog/CL.command.1.tlog and b/StgSharp.C/x64/Debug/StgSharp.C.tlog/CL.command.1.tlog differ diff --git a/StgSharp.C/x64/Debug/StgSharp.C.tlog/CL.read.1.tlog b/StgSharp.C/x64/Debug/StgSharp.C.tlog/CL.read.1.tlog index 18832a21..876086ad 100644 Binary files a/StgSharp.C/x64/Debug/StgSharp.C.tlog/CL.read.1.tlog and b/StgSharp.C/x64/Debug/StgSharp.C.tlog/CL.read.1.tlog differ diff --git a/StgSharp.C/x64/Debug/StgSharp.C.tlog/CL.write.1.tlog b/StgSharp.C/x64/Debug/StgSharp.C.tlog/CL.write.1.tlog index 9c290a6f..9c7ecadf 100644 Binary files a/StgSharp.C/x64/Debug/StgSharp.C.tlog/CL.write.1.tlog and b/StgSharp.C/x64/Debug/StgSharp.C.tlog/CL.write.1.tlog differ diff --git a/StgSharp.C/x64/Debug/StgSharp.C.tlog/link.read.1.tlog b/StgSharp.C/x64/Debug/StgSharp.C.tlog/link.read.1.tlog index 13964ded..e87b49d9 100644 Binary files a/StgSharp.C/x64/Debug/StgSharp.C.tlog/link.read.1.tlog and b/StgSharp.C/x64/Debug/StgSharp.C.tlog/link.read.1.tlog differ diff --git a/StgSharp.C/x64/Debug/StgSharpC.log b/StgSharp.C/x64/Debug/StgSharpC.log index 11a5cd61..ea01ee70 100644 --- a/StgSharp.C/x64/Debug/StgSharpC.log +++ b/StgSharp.C/x64/Debug/StgSharpC.log @@ -4,4 +4,7 @@ D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\St D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\hash.c(31,50): warning C4244: “函数”: 从“uint64_t”转换到“unsigned char”,可能丢失数据 D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\hash.c(7,15): warning C4090: “初始化”: 不同的“const”限定符 D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\hash.c(7,34): warning C4090: “初始化”: 不同的“const”限定符 + LINK : 没有找到 D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\build\StgSharp.C.dll 或上一个增量链接没有生成它;正在执行完全链接 + 正在创建库 D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\build\StgSharp.C.lib 和对象 D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\build\StgSharp.C.exp +LINK : warning LNK4098: 默认库“MSVCRT”与其他库的使用冲突;请使用 /NODEFAULTLIB:library StgSharpC.vcxproj -> D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\build\StgSharp.C.dll diff --git a/StgSharp.C/x64/Debug/StgSharpC.obj b/StgSharp.C/x64/Debug/StgSharpC.obj index b319ce9d..555e5e7b 100644 Binary files a/StgSharp.C/x64/Debug/StgSharpC.obj and b/StgSharp.C/x64/Debug/StgSharpC.obj differ diff --git a/StgSharp.C/x64/Debug/dllmain.obj b/StgSharp.C/x64/Debug/dllmain.obj index e8c33c33..36fddd36 100644 Binary files a/StgSharp.C/x64/Debug/dllmain.obj and b/StgSharp.C/x64/Debug/dllmain.obj differ diff --git a/StgSharp.C/x64/Debug/hash.cod b/StgSharp.C/x64/Debug/hash.cod index 2f0b8e8a..64bc2ec6 100644 --- a/StgSharp.C/x64/Debug/hash.cod +++ b/StgSharp.C/x64/Debug/hash.cod @@ -300,7 +300,7 @@ $LN7@city_hash_: 000d0 eb d7 jmp SHORT $LN5@city_hash_ $LN6@city_hash_: -; 18 : for (; ptr < end; ptr++) { +; 18 : for (; ptr < end; ptr++) { 000d2 eb 0b jmp SHORT $LN10@city_hash_ $LN8@city_hash_: diff --git a/StgSharp.C/x64/Debug/hash.obj b/StgSharp.C/x64/Debug/hash.obj index 4beb8e7c..cd683a2c 100644 Binary files a/StgSharp.C/x64/Debug/hash.obj and b/StgSharp.C/x64/Debug/hash.obj differ diff --git a/StgSharp.C/x64/Debug/intrinsic.obj b/StgSharp.C/x64/Debug/intrinsic.obj index 8432c5b1..dff03121 100644 Binary files a/StgSharp.C/x64/Debug/intrinsic.obj and b/StgSharp.C/x64/Debug/intrinsic.obj differ diff --git a/StgSharp.C/x64/Debug/mat2.obj b/StgSharp.C/x64/Debug/mat2.obj index 9e27805c..0346294b 100644 Binary files a/StgSharp.C/x64/Debug/mat2.obj and b/StgSharp.C/x64/Debug/mat2.obj differ diff --git a/StgSharp.C/x64/Debug/mat3.obj b/StgSharp.C/x64/Debug/mat3.obj index cc0c501b..482da0b0 100644 Binary files a/StgSharp.C/x64/Debug/mat3.obj and b/StgSharp.C/x64/Debug/mat3.obj differ diff --git a/StgSharp.C/x64/Debug/mat4.obj b/StgSharp.C/x64/Debug/mat4.obj index 9d1dd289..4beaad2b 100644 Binary files a/StgSharp.C/x64/Debug/mat4.obj and b/StgSharp.C/x64/Debug/mat4.obj differ diff --git a/StgSharp.C/x64/Debug/stb_image.obj b/StgSharp.C/x64/Debug/stb_image.obj index d0ce7c53..9557c1ed 100644 Binary files a/StgSharp.C/x64/Debug/stb_image.obj and b/StgSharp.C/x64/Debug/stb_image.obj differ diff --git a/StgSharp.C/x64/Debug/string.obj b/StgSharp.C/x64/Debug/string.obj index 55835a0d..2f7b4567 100644 Binary files a/StgSharp.C/x64/Debug/string.obj and b/StgSharp.C/x64/Debug/string.obj differ diff --git a/StgSharp.C/x64/Debug/vc143.idb b/StgSharp.C/x64/Debug/vc143.idb index cf2749cb..f68c3b2f 100644 Binary files a/StgSharp.C/x64/Debug/vc143.idb and b/StgSharp.C/x64/Debug/vc143.idb differ diff --git a/StgSharp.C/x64/Debug/vc143.pdb b/StgSharp.C/x64/Debug/vc143.pdb index 629f56f8..7d8c7af4 100644 Binary files a/StgSharp.C/x64/Debug/vc143.pdb and b/StgSharp.C/x64/Debug/vc143.pdb differ diff --git a/StgSharp.C/x64/Debug/vector.obj b/StgSharp.C/x64/Debug/vector.obj index ce3dbac8..62685488 100644 Binary files a/StgSharp.C/x64/Debug/vector.obj and b/StgSharp.C/x64/Debug/vector.obj differ diff --git a/StgSharp.C/x64/Debug/vector_dot.obj b/StgSharp.C/x64/Debug/vector_dot.obj index aef0a7b1..61d855a2 100644 Binary files a/StgSharp.C/x64/Debug/vector_dot.obj and b/StgSharp.C/x64/Debug/vector_dot.obj differ diff --git a/StgSharp.C/x64/Release/StgSharp.C.dll.recipe b/StgSharp.C/x64/Release/StgSharp.C.dll.recipe new file mode 100644 index 00000000..eefe6ff0 --- /dev/null +++ b/StgSharp.C/x64/Release/StgSharp.C.dll.recipe @@ -0,0 +1,11 @@ + + + + + C:\Users\Youmu\OneDrive - MSFT\大学\毕业设计\GraduationProject\build\StgSharp.C.dll + + + + + + \ No newline at end of file diff --git a/StgSharp.C/x64/Release/StgSharp.C.iobj b/StgSharp.C/x64/Release/StgSharp.C.iobj new file mode 100644 index 00000000..eb8ef5a5 Binary files /dev/null and b/StgSharp.C/x64/Release/StgSharp.C.iobj differ diff --git a/StgSharp.C/x64/Release/StgSharp.C.tlog/CL.command.1.tlog b/StgSharp.C/x64/Release/StgSharp.C.tlog/CL.command.1.tlog new file mode 100644 index 00000000..0e73f069 Binary files /dev/null and b/StgSharp.C/x64/Release/StgSharp.C.tlog/CL.command.1.tlog differ diff --git a/StgSharp.C/x64/Release/StgSharp.C.tlog/CL.read.1.tlog b/StgSharp.C/x64/Release/StgSharp.C.tlog/CL.read.1.tlog new file mode 100644 index 00000000..24d52a48 Binary files /dev/null and b/StgSharp.C/x64/Release/StgSharp.C.tlog/CL.read.1.tlog differ diff --git a/StgSharp.C/x64/Release/StgSharp.C.tlog/CL.write.1.tlog b/StgSharp.C/x64/Release/StgSharp.C.tlog/CL.write.1.tlog new file mode 100644 index 00000000..8fbf857c Binary files /dev/null and b/StgSharp.C/x64/Release/StgSharp.C.tlog/CL.write.1.tlog differ diff --git a/StgSharp.C/x64/Release/StgSharp.C.tlog/Cl.items.tlog b/StgSharp.C/x64/Release/StgSharp.C.tlog/Cl.items.tlog new file mode 100644 index 00000000..26dad3a0 --- /dev/null +++ b/StgSharp.C/x64/Release/StgSharp.C.tlog/Cl.items.tlog @@ -0,0 +1,11 @@ +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\dllmain.c;D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\x64\Release\dllmain.obj +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\intrinsic.c;D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\x64\Release\intrinsic.obj +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat2.c;D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\x64\Release\mat2.obj +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat3.c;D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\x64\Release\mat3.obj +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c;D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\x64\Release\mat4.obj +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\stb_image.c;D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\x64\Release\stb_image.obj +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\StgSharpC.c;D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\x64\Release\StgSharpC.obj +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\hash.c;D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\x64\Release\hash.obj +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\string.c;D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\x64\Release\string.obj +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\vector.c;D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\x64\Release\vector.obj +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\vector_dot.c;D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\x64\Release\vector_dot.obj diff --git a/StgSharp.C/x64/Release/StgSharp.C.tlog/StgSharp.C.lastbuildstate b/StgSharp.C/x64/Release/StgSharp.C.tlog/StgSharp.C.lastbuildstate new file mode 100644 index 00000000..fba99f0f --- /dev/null +++ b/StgSharp.C/x64/Release/StgSharp.C.tlog/StgSharp.C.lastbuildstate @@ -0,0 +1,2 @@ +PlatformToolSet=v143:VCToolArchitecture=Native64Bit:VCToolsVersion=14.41.34120:TargetPlatformVersion=10.0.22621.0: +Release|x64|C:\Users\Youmu\OneDrive - MSFT\大学\毕业设计\GraduationProject\| diff --git a/StgSharp.C/x64/Release/StgSharp.C.tlog/link.command.1.tlog b/StgSharp.C/x64/Release/StgSharp.C.tlog/link.command.1.tlog new file mode 100644 index 00000000..4c28b9c2 Binary files /dev/null and b/StgSharp.C/x64/Release/StgSharp.C.tlog/link.command.1.tlog differ diff --git a/StgSharp.C/x64/Release/StgSharp.C.tlog/link.read.1.tlog b/StgSharp.C/x64/Release/StgSharp.C.tlog/link.read.1.tlog new file mode 100644 index 00000000..6889fc6a Binary files /dev/null and b/StgSharp.C/x64/Release/StgSharp.C.tlog/link.read.1.tlog differ diff --git a/StgSharp.C/x64/Release/StgSharp.C.tlog/link.secondary.1.tlog b/StgSharp.C/x64/Release/StgSharp.C.tlog/link.secondary.1.tlog new file mode 100644 index 00000000..eee0e053 --- /dev/null +++ b/StgSharp.C/x64/Release/StgSharp.C.tlog/link.secondary.1.tlog @@ -0,0 +1,4 @@ +^D:\NITLOADINDUSTRY\研究项目\1-FLAGSHIP\TH2020\PROJECTFILE\内核源代码\STGSHARP.C\GLFW3.LIB|D:\NITLOADINDUSTRY\研究项目\1-FLAGSHIP\TH2020\PROJECTFILE\内核源代码\STGSHARP.C\GLFW3DLL.LIB|D:\NITLOADINDUSTRY\研究项目\1-FLAGSHIP\TH2020\PROJECTFILE\内核源代码\STGSHARP.C\GLFW3_MT.LIB|D:\NITLOADINDUSTRY\研究项目\1-FLAGSHIP\TH2020\PROJECTFILE\内核源代码\STGSHARP.C\X64\RELEASE\DLLMAIN.OBJ|D:\NITLOADINDUSTRY\研究项目\1-FLAGSHIP\TH2020\PROJECTFILE\内核源代码\STGSHARP.C\X64\RELEASE\HASH.OBJ|D:\NITLOADINDUSTRY\研究项目\1-FLAGSHIP\TH2020\PROJECTFILE\内核源代码\STGSHARP.C\X64\RELEASE\INTRINSIC.OBJ|D:\NITLOADINDUSTRY\研究项目\1-FLAGSHIP\TH2020\PROJECTFILE\内核源代码\STGSHARP.C\X64\RELEASE\MAT2.OBJ|D:\NITLOADINDUSTRY\研究项目\1-FLAGSHIP\TH2020\PROJECTFILE\内核源代码\STGSHARP.C\X64\RELEASE\MAT3.OBJ|D:\NITLOADINDUSTRY\研究项目\1-FLAGSHIP\TH2020\PROJECTFILE\内核源代码\STGSHARP.C\X64\RELEASE\MAT4.OBJ|D:\NITLOADINDUSTRY\研究项目\1-FLAGSHIP\TH2020\PROJECTFILE\内核源代码\STGSHARP.C\X64\RELEASE\STB_IMAGE.OBJ|D:\NITLOADINDUSTRY\研究项目\1-FLAGSHIP\TH2020\PROJECTFILE\内核源代码\STGSHARP.C\X64\RELEASE\STGSHARPC.OBJ|D:\NITLOADINDUSTRY\研究项目\1-FLAGSHIP\TH2020\PROJECTFILE\内核源代码\STGSHARP.C\X64\RELEASE\STRING.OBJ|D:\NITLOADINDUSTRY\研究项目\1-FLAGSHIP\TH2020\PROJECTFILE\内核源代码\STGSHARP.C\X64\RELEASE\VECTOR.OBJ|D:\NITLOADINDUSTRY\研究项目\1-FLAGSHIP\TH2020\PROJECTFILE\内核源代码\STGSHARP.C\X64\RELEASE\VECTOR_DOT.OBJ +C:\Users\Youmu\OneDrive - MSFT\大学\毕业设计\GraduationProject\build\StgSharp.C.lib +C:\Users\Youmu\OneDrive - MSFT\大学\毕业设计\GraduationProject\build\StgSharp.C.EXP +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\x64\Release\StgSharp.C.iobj diff --git a/StgSharp.C/x64/Release/StgSharp.C.tlog/link.write.1.tlog b/StgSharp.C/x64/Release/StgSharp.C.tlog/link.write.1.tlog new file mode 100644 index 00000000..34b29c89 Binary files /dev/null and b/StgSharp.C/x64/Release/StgSharp.C.tlog/link.write.1.tlog differ diff --git a/StgSharp.C/x64/Release/StgSharpC.log b/StgSharp.C/x64/Release/StgSharpC.log new file mode 100644 index 00000000..0a804d93 --- /dev/null +++ b/StgSharp.C/x64/Release/StgSharpC.log @@ -0,0 +1,4371 @@ +C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\VC\v170\Microsoft.CppBuild.targets(517,5): warning MSB8004: Output 目录未以斜杠结尾。 此生成实例将添加斜杠,因为必须有这个斜杠才能正确计算 Output 目录。 + hash.c +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\hash.c(30,43): warning C4244: “函数”: 从“uint64_t”转换到“unsigned char”,可能丢失数据 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\hash.c(31,50): warning C4244: “函数”: 从“uint64_t”转换到“unsigned char”,可能丢失数据 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\hash.c(7,15): warning C4090: “初始化”: 不同的“const”限定符 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\hash.c(7,34): warning C4090: “初始化”: 不同的“const”限定符 + 正在启动传递 1 + 已处理 /DEFAULTLIB: MSVCRT + 已处理 /DEFAULTLIB: OLDNAMES + 正在搜索库 + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\opengl32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\kernel32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\user32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\gdi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\winspool.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\comdlg32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\advapi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\shell32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\ole32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\oleaut32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\uuid.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbc32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbccp32.lib: + 正在搜索 glfw3.lib: + 已找到 glfwWindowHint + 已在 StgSharpC.obj 中引用 + 已加载 glfw3.lib(window.obj) + 已处理 /DEFAULTLIB: uuid.lib + 已找到 glfwGetProcAddress + 已在 StgSharpC.obj 中引用 + 已加载 glfw3.lib(context.obj) + 已找到 _glfwPlatformGetTls + 已在 glfw3.lib(window.obj) 中引用 + 已在 glfw3.lib(context.obj) 中引用 + 已加载 glfw3.lib(win32_thread.obj) + 已找到 _glfwInputKey + 已在 glfw3.lib(window.obj) 中引用 + 已加载 glfw3.lib(input.obj) + 已找到 _glfwInputError + 已在 glfw3.lib(window.obj) 中引用 + 已在 glfw3.lib(context.obj) 中引用 + 已在 glfw3.lib(win32_thread.obj) 中引用 + 已在 glfw3.lib(input.obj) 中引用 + 已加载 glfw3.lib(init.obj) + 已找到 _glfwPlatformGetTimerValue + 已在 glfw3.lib(input.obj) 中引用 + 已在 glfw3.lib(init.obj) 中引用 + 已加载 glfw3.lib(win32_time.obj) + 已找到 _glfwSelectPlatform + 已在 glfw3.lib(init.obj) 中引用 + 已加载 glfw3.lib(platform.obj) + 已找到 _glfwFreeMonitor + 已在 glfw3.lib(init.obj) 中引用 + 已加载 glfw3.lib(monitor.obj) + 已找到 _glfwTerminateVulkan + 已在 glfw3.lib(init.obj) 中引用 + 已加载 glfw3.lib(vulkan.obj) + 已找到 _glfwConnectWin32 + 已在 glfw3.lib(platform.obj) 中引用 + 已加载 glfw3.lib(win32_init.obj) + 已找到 _glfwConnectNull + 已在 glfw3.lib(platform.obj) 中引用 + 已加载 glfw3.lib(null_init.obj) + 已找到 _glfwPlatformLoadModule + 已在 glfw3.lib(vulkan.obj) 中引用 + 已在 glfw3.lib(win32_init.obj) 中引用 + 已加载 glfw3.lib(win32_module.obj) + 已找到 _glfwPollMonitorsWin32 + 已在 glfw3.lib(win32_init.obj) 中引用 + 已加载 glfw3.lib(win32_monitor.obj) + 已找到 _glfwCreateWindowWin32 + 已在 glfw3.lib(win32_init.obj) 中引用 + 已加载 glfw3.lib(win32_window.obj) + 已找到 _glfwInitJoysticksWin32 + 已在 glfw3.lib(win32_init.obj) 中引用 + 已加载 glfw3.lib(win32_joystick.obj) + 已找到 _glfwTerminateWGL + 已在 glfw3.lib(win32_init.obj) 中引用 + 已加载 glfw3.lib(wgl_context.obj) + 已找到 _glfwTerminateEGL + 已在 glfw3.lib(win32_init.obj) 中引用 + 已在 glfw3.lib(null_init.obj) 中引用 + 已加载 glfw3.lib(egl_context.obj) + 已找到 _glfwTerminateOSMesa + 已在 glfw3.lib(win32_init.obj) 中引用 + 已在 glfw3.lib(null_init.obj) 中引用 + 已加载 glfw3.lib(osmesa_context.obj) + 已找到 _glfwPollMonitorsNull + 已在 glfw3.lib(null_init.obj) 中引用 + 已加载 glfw3.lib(null_monitor.obj) + 已找到 _glfwCreateWindowNull + 已在 glfw3.lib(null_init.obj) 中引用 + 已加载 glfw3.lib(null_window.obj) + 已找到 _glfwInitJoysticksNull + 已在 glfw3.lib(null_init.obj) 中引用 + 已加载 glfw3.lib(null_joystick.obj) + 正在搜索 glfw3dll.lib: + 正在搜索 glfw3_mt.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\MSVCRT.lib: + 已找到 __security_check_cookie + 已在 glfw3.lib(wgl_context.obj) 中引用 + 已在 glfw3.lib(egl_context.obj) 中引用 + 已在 glfw3.lib(osmesa_context.obj) 中引用 + 已在 glfw3.lib(null_window.obj) 中引用 + 已在 glfw3.lib(win32_init.obj) 中引用 + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已在 glfw3.lib(win32_window.obj) 中引用 + 已在 glfw3.lib(win32_joystick.obj) 中引用 + 已在 dllmain.obj 中引用 + 已在 glfw3.lib(window.obj) 中引用 + 已在 glfw3.lib(input.obj) 中引用 + 已在 glfw3.lib(init.obj) 中引用 + 已加载 MSVCRT.lib(amdsecgs.obj) + 已找到 __avx10_version + 已在 intrinsic.obj 中引用 + 已加载 MSVCRT.lib(cpu_disp.obj) + 已找到 __report_rangecheckfailure + 已在 StgSharpC.obj 中引用 + 已加载 MSVCRT.lib(gs_report.obj) + 已找到 _DllMainCRTStartup + 已加载 MSVCRT.lib(dll_dllmain.obj) + 已找到 __GSHandlerCheck + 已在 glfw3.lib(egl_context.obj) 中引用 + 已在 glfw3.lib(osmesa_context.obj) 中引用 + 已在 glfw3.lib(null_window.obj) 中引用 + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已在 glfw3.lib(win32_window.obj) 中引用 + 已在 glfw3.lib(win32_joystick.obj) 中引用 + 已在 glfw3.lib(wgl_context.obj) 中引用 + 已在 glfw3.lib(window.obj) 中引用 + 已在 glfw3.lib(input.obj) 中引用 + 已在 glfw3.lib(init.obj) 中引用 + 已在 glfw3.lib(win32_init.obj) 中引用 + 已加载 MSVCRT.lib(gshandler.obj) + 已找到 __security_cookie + 已在 MSVCRT.lib(gs_report.obj) 中引用 + 已在 glfw3.lib(egl_context.obj) 中引用 + 已在 glfw3.lib(osmesa_context.obj) 中引用 + 已在 glfw3.lib(null_window.obj) 中引用 + 已在 MSVCRT.lib(amdsecgs.obj) 中引用 + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已在 glfw3.lib(win32_window.obj) 中引用 + 已在 glfw3.lib(win32_joystick.obj) 中引用 + 已在 glfw3.lib(wgl_context.obj) 中引用 + 已在 glfw3.lib(window.obj) 中引用 + 已在 glfw3.lib(input.obj) 中引用 + 已在 glfw3.lib(init.obj) 中引用 + 已在 glfw3.lib(win32_init.obj) 中引用 + 已加载 MSVCRT.lib(gs_cookie.obj) + 已找到 _fltused + 已在 glfw3.lib(null_window.obj) 中引用 + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已在 glfw3.lib(win32_window.obj) 中引用 + 已在 glfw3.lib(win32_joystick.obj) 中引用 + 已在 glfw3.lib(null_monitor.obj) 中引用 + 已在 glfw3.lib(window.obj) 中引用 + 已在 glfw3.lib(input.obj) 中引用 + 已在 glfw3.lib(init.obj) 中引用 + 已在 glfw3.lib(monitor.obj) 中引用 + 已加载 MSVCRT.lib(fltused.obj) + 已找到 __security_init_cookie + 已在 MSVCRT.lib(dll_dllmain.obj) 中引用 + 已加载 MSVCRT.lib(gs_support.obj) + 已找到 "void __cdecl __scrt_initialize_type_info(void)" (?__scrt_initialize_type_info@@YAXXZ) + 已在 MSVCRT.lib(dll_dllmain.obj) 中引用 + 已加载 MSVCRT.lib(tncleanup.obj) + 已找到 __scrt_initialize_default_local_stdio_options + 已在 MSVCRT.lib(dll_dllmain.obj) 中引用 + 已加载 MSVCRT.lib(default_local_stdio_options.obj) + 已找到 __scrt_is_nonwritable_in_current_image + 已在 MSVCRT.lib(dll_dllmain.obj) 中引用 + 已加载 MSVCRT.lib(utility.obj) + 已找到 __scrt_get_dyn_tls_init_callback + 已在 MSVCRT.lib(dll_dllmain.obj) 中引用 + 已加载 MSVCRT.lib(dyn_tls_init.obj) + 已找到 __scrt_fastfail + 已在 MSVCRT.lib(dll_dllmain.obj) 中引用 + 已在 MSVCRT.lib(utility.obj) 中引用 + 已加载 MSVCRT.lib(utility_desktop.obj) + 已找到 _RTC_Initialize + 已在 MSVCRT.lib(dll_dllmain.obj) 中引用 + 已加载 MSVCRT.lib(initsect.obj) + 已找到 __xi_a + 已在 MSVCRT.lib(dll_dllmain.obj) 中引用 + 已加载 MSVCRT.lib(initializers.obj) + 已处理 /DEFAULTLIB: kernel32.lib + 已处理 /DISALLOWLIB: msvcrtd.lib + 已处理 /DISALLOWLIB: libcmt.lib + 已处理 /DISALLOWLIB: libcmtd.lib + 已处理 /DEFAULTLIB: vcruntime.lib + 已处理 /DISALLOWLIB: vcruntimed.lib + 已处理 /DISALLOWLIB: libvcruntime.lib + 已处理 /DISALLOWLIB: libvcruntimed.lib + 已处理 /DEFAULTLIB: ucrt.lib + 已处理 /DISALLOWLIB: ucrtd.lib + 已处理 /DISALLOWLIB: libucrt.lib + 已处理 /DISALLOWLIB: libucrtd.lib + 已找到 __guard_dispatch_icall_fptr + 已在 MSVCRT.lib(dll_dllmain.obj) 中引用 + 已在 MSVCRT.lib(utility.obj) 中引用 + 已在 MSVCRT.lib(initsect.obj) 中引用 + 已加载 MSVCRT.lib(guard_support.obj) + 已找到 _get_startup_argv_mode + 已在 MSVCRT.lib(utility.obj) 中引用 + 已加载 MSVCRT.lib(argv_mode.obj) + 已找到 __scrt_is_ucrt_dll_in_use + 已在 MSVCRT.lib(utility.obj) 中引用 + 已加载 MSVCRT.lib(ucrt_detection.obj) + 已找到 _guard_dispatch_icall_nop + 已在 MSVCRT.lib(guard_support.obj) 中引用 + 已加载 MSVCRT.lib(guard_dispatch.obj) + 已找到 _guard_xfg_dispatch_icall_nop + 已在 MSVCRT.lib(guard_support.obj) 中引用 + 已加载 MSVCRT.lib(guard_xfg_dispatch.obj) + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\OLDNAMES.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\vcruntime.lib: + 已找到 memset + 已在 glfw3.lib(null_init.obj) 中引用 + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已在 glfw3.lib(win32_joystick.obj) 中引用 + 已在 MSVCRT.lib(utility_desktop.obj) 中引用 + 已在 glfw3.lib(window.obj) 中引用 + 已在 glfw3.lib(input.obj) 中引用 + 已在 glfw3.lib(init.obj) 中引用 + 已在 glfw3.lib(win32_init.obj) 中引用 + 已加载 vcruntime.lib(VCRUNTIME140.dll) + 已找到 strstr + 已在 glfw3.lib(context.obj) 中引用 + 已在 glfw3.lib(win32_joystick.obj) 中引用 + 已加载 vcruntime.lib(VCRUNTIME140.dll) + 已找到 memcpy + 已在 glfw3.lib(input.obj) 中引用 + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已在 glfw3.lib(null_monitor.obj) 中引用 + 已加载 vcruntime.lib(VCRUNTIME140.dll) + 已找到 memmove + 已在 glfw3.lib(monitor.obj) 中引用 + 已加载 vcruntime.lib(VCRUNTIME140.dll) + 已找到 __C_specific_handler + 已在 MSVCRT.lib(dll_dllmain.obj) 中引用 + 已在 MSVCRT.lib(utility.obj) 中引用 + 已加载 vcruntime.lib(VCRUNTIME140.dll) + 已找到 __std_type_info_destroy_list + 已在 MSVCRT.lib(tncleanup.obj) 中引用 + 已加载 vcruntime.lib(VCRUNTIME140.dll) + 已找到 __current_exception + 已在 MSVCRT.lib(utility_desktop.obj) 中引用 + 已加载 vcruntime.lib(VCRUNTIME140.dll) + 已找到 __current_exception_context + 已在 MSVCRT.lib(utility_desktop.obj) 中引用 + 已加载 vcruntime.lib(VCRUNTIME140.dll) + 已找到 __IMPORT_DESCRIPTOR_VCRUNTIME140 + 已在 vcruntime.lib(VCRUNTIME140.dll) 中引用 + 已在 vcruntime.lib(VCRUNTIME140.dll) 中引用 + 已在 vcruntime.lib(VCRUNTIME140.dll) 中引用 + 已在 vcruntime.lib(VCRUNTIME140.dll) 中引用 + 已在 vcruntime.lib(VCRUNTIME140.dll) 中引用 + 已在 vcruntime.lib(VCRUNTIME140.dll) 中引用 + 已在 vcruntime.lib(VCRUNTIME140.dll) 中引用 + 已在 vcruntime.lib(VCRUNTIME140.dll) 中引用 + 已加载 vcruntime.lib(VCRUNTIME140.dll) + 已找到 __NULL_IMPORT_DESCRIPTOR + 已在 vcruntime.lib(VCRUNTIME140.dll) 中引用 + 已加载 vcruntime.lib(VCRUNTIME140.dll) + 已找到 VCRUNTIME140_NULL_THUNK_DATA + 已在 vcruntime.lib(VCRUNTIME140.dll) 中引用 + 已加载 vcruntime.lib(VCRUNTIME140.dll) + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64\ucrt.lib: + 已找到 __imp_ftell + 已在 stb_image.obj 中引用 + 已加载 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + 已找到 __imp_ferror + 已在 stb_image.obj 中引用 + 已加载 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + 已找到 __imp_fclose + 已在 stb_image.obj 中引用 + 已加载 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + 已找到 __imp_realloc + 已在 stb_image.obj 中引用 + 已在 glfw3.lib(init.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) + 已找到 __imp_fseek + 已在 stb_image.obj 中引用 + 已加载 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + 已找到 __imp_fgetc + 已在 stb_image.obj 中引用 + 已加载 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + 已找到 __imp_strncmp + 已在 glfw3.lib(egl_context.obj) 中引用 + 已在 stb_image.obj 中引用 + 已在 glfw3.lib(context.obj) 中引用 + 已在 glfw3.lib(input.obj) 中引用 + 已在 glfw3.lib(init.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + 已找到 __imp_fopen_s + 已在 stb_image.obj 中引用 + 已加载 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + 已找到 __imp_strtol + 已在 stb_image.obj 中引用 + 已在 glfw3.lib(init.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-convert-l1-1-0.dll) + 已找到 __imp_ldexp + 已在 stb_image.obj 中引用 + 已加载 ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) + 已找到 __imp_free + 已在 stb_image.obj 中引用 + 已在 glfw3.lib(init.obj) 中引用 + 已在 glfw3.lib(null_init.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) + 已找到 __imp_ungetc + 已在 stb_image.obj 中引用 + 已加载 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + 已找到 __imp_feof + 已在 stb_image.obj 中引用 + 已加载 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + 已找到 __imp_fread + 已在 stb_image.obj 中引用 + 已加载 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + 已找到 __imp_malloc + 已在 stb_image.obj 中引用 + 已在 glfw3.lib(init.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) + 已找到 __imp_strcpy_s + 已在 StgSharpC.obj 中引用 + 已加载 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + 已找到 __imp_strncpy + 已在 glfw3.lib(window.obj) 中引用 + 已在 glfw3.lib(input.obj) 中引用 + 已在 glfw3.lib(monitor.obj) 中引用 + 已在 glfw3.lib(win32_joystick.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + 已找到 __imp___stdio_common_vsscanf + 已在 glfw3.lib(context.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + 已找到 __imp_strcspn + 已在 glfw3.lib(input.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + 已找到 __imp_strspn + 已在 glfw3.lib(input.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + 已找到 __imp_strtoul + 已在 glfw3.lib(input.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-convert-l1-1-0.dll) + 已找到 __imp_strtok + 已在 glfw3.lib(init.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + 已找到 __imp___stdio_common_vsprintf + 已在 glfw3.lib(init.obj) 中引用 + 已在 glfw3.lib(win32_joystick.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + 已找到 __imp_qsort + 已在 glfw3.lib(monitor.obj) 中引用 + 已在 glfw3.lib(win32_joystick.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-utility-l1-1-0.dll) + 已找到 powf + 已在 glfw3.lib(monitor.obj) 中引用 + 已在 glfw3.lib(null_monitor.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) + 已找到 strcmp + 已在 glfw3.lib(vulkan.obj) 中引用 + 已在 glfw3.lib(win32_joystick.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + 已找到 _initterm + 已在 MSVCRT.lib(dll_dllmain.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + 已找到 _initterm_e + 已在 MSVCRT.lib(dll_dllmain.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + 已找到 _seh_filter_dll + 已在 MSVCRT.lib(utility.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + 已找到 _configure_narrow_argv + 已在 MSVCRT.lib(utility.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + 已找到 _initialize_narrow_environment + 已在 MSVCRT.lib(utility.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + 已找到 _initialize_onexit_table + 已在 MSVCRT.lib(utility.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + 已找到 _register_onexit_function + 已在 MSVCRT.lib(utility.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + 已找到 _execute_onexit_table + 已在 MSVCRT.lib(utility.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + 已找到 _crt_atexit + 已在 MSVCRT.lib(utility.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + 已找到 _crt_at_quick_exit + 已在 MSVCRT.lib(utility.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + 已找到 _cexit + 已在 MSVCRT.lib(utility.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + 已找到 terminate + 已在 MSVCRT.lib(utility_desktop.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + 已找到 __IMPORT_DESCRIPTOR_api-ms-win-crt-stdio-l1-1-0 + 已在 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + 已找到 __IMPORT_DESCRIPTOR_api-ms-win-crt-heap-l1-1-0 + 已在 ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) + 已找到 __IMPORT_DESCRIPTOR_api-ms-win-crt-string-l1-1-0 + 已在 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + 已找到 __IMPORT_DESCRIPTOR_api-ms-win-crt-convert-l1-1-0 + 已在 ucrt.lib(api-ms-win-crt-convert-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-convert-l1-1-0.dll) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-convert-l1-1-0.dll) + 已找到 __IMPORT_DESCRIPTOR_api-ms-win-crt-math-l1-1-0 + 已在 ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) + 已找到 __IMPORT_DESCRIPTOR_api-ms-win-crt-utility-l1-1-0 + 已在 ucrt.lib(api-ms-win-crt-utility-l1-1-0.dll) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-utility-l1-1-0.dll) + 已找到 __IMPORT_DESCRIPTOR_api-ms-win-crt-runtime-l1-1-0 + 已在 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + 已找到 api-ms-win-crt-stdio-l1-1-0_NULL_THUNK_DATA + 已在 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + 已找到 api-ms-win-crt-heap-l1-1-0_NULL_THUNK_DATA + 已在 ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) + 已找到 api-ms-win-crt-string-l1-1-0_NULL_THUNK_DATA + 已在 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + 已找到 api-ms-win-crt-convert-l1-1-0_NULL_THUNK_DATA + 已在 ucrt.lib(api-ms-win-crt-convert-l1-1-0.dll) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-convert-l1-1-0.dll) + 已找到 api-ms-win-crt-math-l1-1-0_NULL_THUNK_DATA + 已在 ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) + 已找到 api-ms-win-crt-utility-l1-1-0_NULL_THUNK_DATA + 已在 ucrt.lib(api-ms-win-crt-utility-l1-1-0.dll) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-utility-l1-1-0.dll) + 已找到 api-ms-win-crt-runtime-l1-1-0_NULL_THUNK_DATA + 已在 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\opengl32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\kernel32.lib: + 已找到 __imp_InitializeCriticalSection + 已在 glfw3.lib(win32_thread.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_EnterCriticalSection + 已在 glfw3.lib(win32_thread.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_LeaveCriticalSection + 已在 glfw3.lib(win32_thread.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_DeleteCriticalSection + 已在 glfw3.lib(win32_thread.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_TlsAlloc + 已在 glfw3.lib(win32_thread.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_TlsGetValue + 已在 glfw3.lib(win32_thread.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_TlsSetValue + 已在 glfw3.lib(win32_thread.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_TlsFree + 已在 glfw3.lib(win32_thread.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_QueryPerformanceCounter + 已在 glfw3.lib(win32_time.obj) 中引用 + 已在 MSVCRT.lib(gs_support.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_QueryPerformanceFrequency + 已在 glfw3.lib(win32_time.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_VerSetConditionMask + 已在 glfw3.lib(win32_init.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_GetLastError + 已在 glfw3.lib(win32_init.obj) 中引用 + 已在 glfw3.lib(wgl_context.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_GetModuleHandleExW + 已在 glfw3.lib(win32_init.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_FormatMessageW + 已在 glfw3.lib(win32_init.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_MultiByteToWideChar + 已在 glfw3.lib(win32_init.obj) 中引用 + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_WideCharToMultiByte + 已在 glfw3.lib(win32_init.obj) 中引用 + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已在 glfw3.lib(win32_joystick.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_FreeLibrary + 已在 glfw3.lib(win32_module.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_GetProcAddress + 已在 glfw3.lib(win32_module.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_LoadLibraryA + 已在 glfw3.lib(win32_module.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_GetModuleHandleW + 已在 glfw3.lib(win32_window.obj) 中引用 + 已在 MSVCRT.lib(utility_desktop.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_GlobalAlloc + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_GlobalUnlock + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_GlobalLock + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_GlobalFree + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_SetThreadExecutionState + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_RtlCaptureContext + 已在 MSVCRT.lib(gs_report.obj) 中引用 + 已在 MSVCRT.lib(utility_desktop.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_RtlLookupFunctionEntry + 已在 MSVCRT.lib(gs_report.obj) 中引用 + 已在 MSVCRT.lib(utility_desktop.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_RtlVirtualUnwind + 已在 MSVCRT.lib(gs_report.obj) 中引用 + 已在 MSVCRT.lib(utility_desktop.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_UnhandledExceptionFilter + 已在 MSVCRT.lib(gs_report.obj) 中引用 + 已在 MSVCRT.lib(utility_desktop.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_SetUnhandledExceptionFilter + 已在 MSVCRT.lib(gs_report.obj) 中引用 + 已在 MSVCRT.lib(utility_desktop.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_GetCurrentProcess + 已在 MSVCRT.lib(gs_report.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_TerminateProcess + 已在 MSVCRT.lib(gs_report.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_IsProcessorFeaturePresent + 已在 MSVCRT.lib(gs_report.obj) 中引用 + 已在 MSVCRT.lib(utility_desktop.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_GetCurrentProcessId + 已在 MSVCRT.lib(gs_support.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_GetCurrentThreadId + 已在 MSVCRT.lib(gs_support.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_GetSystemTimeAsFileTime + 已在 MSVCRT.lib(gs_support.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_InitializeSListHead + 已在 MSVCRT.lib(tncleanup.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_IsDebuggerPresent + 已在 MSVCRT.lib(utility_desktop.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_GetStartupInfoW + 已在 MSVCRT.lib(utility_desktop.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __IMPORT_DESCRIPTOR_KERNEL32 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 KERNEL32_NULL_THUNK_DATA + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\user32.lib: + 已找到 __imp_TranslateMessage + 已在 glfw3.lib(win32_init.obj) 中引用 + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_DispatchMessageW + 已在 glfw3.lib(win32_init.obj) 中引用 + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_PeekMessageW + 已在 glfw3.lib(win32_init.obj) 中引用 + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_RegisterDeviceNotificationW + 已在 glfw3.lib(win32_init.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_UnregisterDeviceNotification + 已在 glfw3.lib(win32_init.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_DefWindowProcW + 已在 glfw3.lib(win32_init.obj) 中引用 + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_UnregisterClassW + 已在 glfw3.lib(win32_init.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_RegisterClassExW + 已在 glfw3.lib(win32_init.obj) 中引用 + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_CreateWindowExW + 已在 glfw3.lib(win32_init.obj) 中引用 + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_DestroyWindow + 已在 glfw3.lib(win32_init.obj) 中引用 + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_ShowWindow + 已在 glfw3.lib(win32_init.obj) 中引用 + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_ToUnicode + 已在 glfw3.lib(win32_init.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_MapVirtualKeyW + 已在 glfw3.lib(win32_init.obj) 中引用 + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_GetDC + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已在 glfw3.lib(win32_window.obj) 中引用 + 已在 glfw3.lib(wgl_context.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_ReleaseDC + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_ChangeDisplaySettingsExW + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_EnumDisplaySettingsW + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_EnumDisplaySettingsExW + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_EnumDisplayDevicesW + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_GetMonitorInfoW + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_EnumDisplayMonitors + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_TrackMouseEvent + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_GetMessageTime + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_SendMessageW + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_PostMessageW + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_WaitMessage + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_GetLayeredWindowAttributes + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_SetLayeredWindowAttributes + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_FlashWindow + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_MoveWindow + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_SetWindowPos + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_GetWindowPlacement + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_SetWindowPlacement + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_IsWindowVisible + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_IsIconic + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_BringWindowToTop + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_IsZoomed + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_OpenClipboard + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_CloseClipboard + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_SetClipboardData + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_GetClipboardData + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_EmptyClipboard + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_SetFocus + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_GetActiveWindow + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_GetKeyState + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_SetCapture + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_ReleaseCapture + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_MsgWaitForMultipleObjects + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_GetSystemMetrics + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_SetForegroundWindow + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_SetPropW + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_GetPropW + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_RemovePropW + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_SetWindowTextW + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_GetClientRect + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_GetWindowRect + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_AdjustWindowRectEx + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_SetCursorPos + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_SetCursor + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_GetCursorPos + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_ClientToScreen + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_ScreenToClient + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_WindowFromPoint + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_ClipCursor + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_SetRect + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_OffsetRect + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_PtInRect + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_GetWindowLongW + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_SetWindowLongW + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_GetClassLongPtrW + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_LoadCursorW + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_DestroyIcon + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_LoadImageW + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_CreateIconIndirect + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_SystemParametersInfoW + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_MonitorFromWindow + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_GetRawInputData + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_RegisterRawInputDevices + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_GetRawInputDeviceInfoA + 已在 glfw3.lib(win32_joystick.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_GetRawInputDeviceList + 已在 glfw3.lib(win32_joystick.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __IMPORT_DESCRIPTOR_USER32 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 USER32_NULL_THUNK_DATA + 已在 user32.lib(USER32.dll) 中引用 + 已加载 user32.lib(USER32.dll) + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\gdi32.lib: + 已找到 __imp_CreateDCW + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已加载 gdi32.lib(GDI32.dll) + 已找到 __imp_DeleteDC + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已加载 gdi32.lib(GDI32.dll) + 已找到 __imp_GetDeviceCaps + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已加载 gdi32.lib(GDI32.dll) + 已找到 __imp_GetDeviceGammaRamp + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已加载 gdi32.lib(GDI32.dll) + 已找到 __imp_SetDeviceGammaRamp + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已加载 gdi32.lib(GDI32.dll) + 已找到 __imp_CreateBitmap + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 gdi32.lib(GDI32.dll) + 已找到 __imp_CreateRectRgn + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 gdi32.lib(GDI32.dll) + 已找到 __imp_DeleteObject + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 gdi32.lib(GDI32.dll) + 已找到 __imp_CreateDIBSection + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 gdi32.lib(GDI32.dll) + 已找到 __imp_ChoosePixelFormat + 已在 glfw3.lib(wgl_context.obj) 中引用 + 已加载 gdi32.lib(GDI32.dll) + 已找到 __imp_DescribePixelFormat + 已在 glfw3.lib(wgl_context.obj) 中引用 + 已加载 gdi32.lib(GDI32.dll) + 已找到 __imp_SetPixelFormat + 已在 glfw3.lib(wgl_context.obj) 中引用 + 已加载 gdi32.lib(GDI32.dll) + 已找到 __imp_SwapBuffers + 已在 glfw3.lib(wgl_context.obj) 中引用 + 已加载 gdi32.lib(GDI32.dll) + 已找到 __IMPORT_DESCRIPTOR_GDI32 + 已在 gdi32.lib(GDI32.dll) 中引用 + 已在 gdi32.lib(GDI32.dll) 中引用 + 已在 gdi32.lib(GDI32.dll) 中引用 + 已在 gdi32.lib(GDI32.dll) 中引用 + 已在 gdi32.lib(GDI32.dll) 中引用 + 已在 gdi32.lib(GDI32.dll) 中引用 + 已在 gdi32.lib(GDI32.dll) 中引用 + 已在 gdi32.lib(GDI32.dll) 中引用 + 已在 gdi32.lib(GDI32.dll) 中引用 + 已在 gdi32.lib(GDI32.dll) 中引用 + 已在 gdi32.lib(GDI32.dll) 中引用 + 已在 gdi32.lib(GDI32.dll) 中引用 + 已在 gdi32.lib(GDI32.dll) 中引用 + 已加载 gdi32.lib(GDI32.dll) + 已找到 GDI32_NULL_THUNK_DATA + 已在 gdi32.lib(GDI32.dll) 中引用 + 已加载 gdi32.lib(GDI32.dll) + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\winspool.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\comdlg32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\advapi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\shell32.lib: + 已找到 __imp_DragQueryFileW + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 shell32.lib(SHELL32.dll) + 已找到 __imp_DragQueryPoint + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 shell32.lib(SHELL32.dll) + 已找到 __imp_DragFinish + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 shell32.lib(SHELL32.dll) + 已找到 __imp_DragAcceptFiles + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 shell32.lib(SHELL32.dll) + 已找到 __IMPORT_DESCRIPTOR_SHELL32 + 已在 shell32.lib(SHELL32.dll) 中引用 + 已在 shell32.lib(SHELL32.dll) 中引用 + 已在 shell32.lib(SHELL32.dll) 中引用 + 已在 shell32.lib(SHELL32.dll) 中引用 + 已加载 shell32.lib(SHELL32.dll) + 已找到 SHELL32_NULL_THUNK_DATA + 已在 shell32.lib(SHELL32.dll) 中引用 + 已加载 shell32.lib(SHELL32.dll) + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\ole32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\oleaut32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\uuid.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbc32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbccp32.lib: + 正在搜索 glfw3.lib: + 正在搜索 glfw3dll.lib: + 正在搜索 glfw3_mt.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\MSVCRT.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\OLDNAMES.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\vcruntime.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64\ucrt.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\opengl32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\kernel32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\user32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\gdi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\winspool.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\comdlg32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\advapi32.lib: + 已完成库搜索 + 正在生成 .exp 文件 + 正在创建库 C:\Users\Youmu\OneDrive - MSFT\大学\毕业设计\GraduationProject\build\StgSharp.C.lib 和对象 C:\Users\Youmu\OneDrive - MSFT\大学\毕业设计\GraduationProject\build\StgSharp.C.exp + 已完成 .exp 文件生成 + 正在搜索库 + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\opengl32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\kernel32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\user32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\gdi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\winspool.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\comdlg32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\advapi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\shell32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\ole32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\oleaut32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\uuid.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbc32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbccp32.lib: + 正在搜索 glfw3.lib: + 正在搜索 glfw3dll.lib: + 正在搜索 glfw3_mt.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\MSVCRT.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\OLDNAMES.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\vcruntime.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64\ucrt.lib: + 已完成库搜索 + 正在搜索库 + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\opengl32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\kernel32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\user32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\gdi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\winspool.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\comdlg32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\advapi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\shell32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\ole32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\oleaut32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\uuid.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbc32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbccp32.lib: + 正在搜索 glfw3.lib: + 正在搜索 glfw3dll.lib: + 正在搜索 glfw3_mt.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\MSVCRT.lib: + 已找到 __scrt_stub_for_acrt_initialize + 已加载 MSVCRT.lib(ucrt_stubs.obj) + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\OLDNAMES.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\vcruntime.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64\ucrt.lib: + 已完成库搜索 + 正在搜索库 + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\opengl32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\kernel32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\user32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\gdi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\winspool.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\comdlg32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\advapi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\shell32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\ole32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\oleaut32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\uuid.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbc32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbccp32.lib: + 正在搜索 glfw3.lib: + 正在搜索 glfw3dll.lib: + 正在搜索 glfw3_mt.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\MSVCRT.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\OLDNAMES.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\vcruntime.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64\ucrt.lib: + 已完成库搜索 + 正在搜索库 + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\opengl32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\kernel32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\user32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\gdi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\winspool.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\comdlg32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\advapi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\shell32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\ole32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\oleaut32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\uuid.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbc32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbccp32.lib: + 正在搜索 glfw3.lib: + 正在搜索 glfw3dll.lib: + 正在搜索 glfw3_mt.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\MSVCRT.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\OLDNAMES.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\vcruntime.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64\ucrt.lib: + 已完成库搜索 + 已完成传递 1 + 已丢弃 "unsigned __int64 `__local_stdio_printf_options'::`2'::_OptionsStorage" (?_OptionsStorage@?1??__local_stdio_printf_options@@9@4_KA)(从 MSVCRT.lib(default_local_stdio_options.obj) 中) + 已丢弃 "unsigned __int64 `__local_stdio_scanf_options'::`2'::_OptionsStorage" (?_OptionsStorage@?1??__local_stdio_scanf_options@@9@4_KA)(从 MSVCRT.lib(default_local_stdio_options.obj) 中) + 已丢弃 __castguard_check_failure_user_handled_fptr(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 "`string'" (??_C@_0BA@KMGHNAFM@Invalid?5time?5?$CFf@)(从 glfw3.lib(input.obj) 中) + 已丢弃 __real@3f800000(从 glfw3.lib(input.obj) 中) + 已丢弃 __real@7fefffffffffffff(从 glfw3.lib(input.obj) 中) + 已丢弃 "`string'" (??_C@_07CAIJGPF@file?3?1?1@)(从 glfw3.lib(init.obj) 中) + 已丢弃 "`string'" (??_C@_02PCIJFNDE@?$AN?6@)(从 glfw3.lib(init.obj) 中) + 已丢弃 __real@3f800000(从 glfw3.lib(monitor.obj) 中) + 已丢弃 "`string'" (??_C@_0P@IENCOMCD@VK_KHR_surface@)(从 glfw3.lib(win32_window.obj) 中) + 已丢弃 "`string'" (??_C@_0BF@COCMEDFO@VK_KHR_win32_surface@)(从 glfw3.lib(win32_window.obj) 中) + 已丢弃 __real@3f800000(从 glfw3.lib(win32_window.obj) 中) + 已丢弃 __real@42c00000(从 glfw3.lib(win32_window.obj) 中) + 已丢弃 __real@3f000000(从 glfw3.lib(win32_joystick.obj) 中) + 已丢弃 __real@3f800000(从 glfw3.lib(win32_joystick.obj) 中) + 已丢弃 "`string'" (??_C@_07PBILKAFL@Success@)(从 glfw3.lib(egl_context.obj) 中) + 已丢弃 __real@3f000000(从 glfw3.lib(null_monitor.obj) 中) + 已丢弃 __real@477fff00(从 glfw3.lib(null_monitor.obj) 中) + 已丢弃 "`string'" (??_C@_0BE@IGCIBFAF@Invalid?5scancode?5?$CFi@)(从 glfw3.lib(null_window.obj) 中) + 已丢弃 "`string'" (??_C@_01IHBHIGKO@?0@)(从 glfw3.lib(null_window.obj) 中) + 已丢弃 "`string'" (??_C@_01MCMALHOG@a@)(从 glfw3.lib(null_window.obj) 中) + 已丢弃 "`string'" (??_C@_01OJONOECF@b@)(从 glfw3.lib(null_window.obj) 中) + 已丢弃 "`string'" (??_C@_01FJMABOPO@x@)(从 glfw3.lib(null_window.obj) 中) + 已丢弃 "`string'" (??_C@_01EANLCPLP@y@)(从 glfw3.lib(null_window.obj) 中) + 已丢弃 "`string'" (??_C@_00CNPNBAHC@@)(从 glfw3.lib(null_joystick.obj) 中) + 已丢弃 __CastGuardVftablesStart(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __CastGuardVftablesEnd(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃“.pdata”(从 glfw3.lib(init.obj) 中) + 已丢弃“.pdata”(从 glfw3.lib(init.obj) 中) + 已丢弃“.pdata”(从 glfw3.lib(init.obj) 中) + 已丢弃“.pdata”(从 glfw3.lib(init.obj) 中) + 已丢弃“.pdata”(从 MSVCRT.lib(gs_report.obj) 中) + 已丢弃“.pdata”(从 MSVCRT.lib(gs_support.obj) 中) + 已丢弃“.pdata”(从 MSVCRT.lib(utility.obj) 中) + 已丢弃“.pdata”(从 MSVCRT.lib(utility.obj) 中) + 已丢弃“.pdata”(从 MSVCRT.lib(utility.obj) 中) + 已丢弃“.pdata”(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃“.pdata”(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃“.pdata”(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃“.pdata”(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃“.pdata”(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃“.pdata”(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃“.pdata”(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃“.pdata”(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃“.pdata”(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃“.idata$4”(从 vcruntime.lib(VCRUNTIME140.dll) 中) + 已丢弃“.idata$4”(从 vcruntime.lib(VCRUNTIME140.dll) 中) + 已丢弃“.idata$4”(从 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中) + 已丢弃“.idata$4”(从 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中) + 已丢弃“.idata$4”(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃“.idata$4”(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃“.idata$4”(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃“.idata$4”(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃“.idata$4”(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 __imp___current_exception(从 vcruntime.lib(VCRUNTIME140.dll) 中) + 已丢弃 __imp___current_exception_context(从 vcruntime.lib(VCRUNTIME140.dll) 中) + 已丢弃 __imp_ftell(从 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中) + 已丢弃 __imp_strtok(从 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中) + 已丢弃 __imp__register_onexit_function(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃 __imp__crt_atexit(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃 __imp__crt_at_quick_exit(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃 __imp_terminate(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃 __imp_GetStartupInfoW(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃“.idata$6”(从 vcruntime.lib(VCRUNTIME140.dll) 中) + 已丢弃“.idata$6”(从 vcruntime.lib(VCRUNTIME140.dll) 中) + 已丢弃“.idata$6”(从 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中) + 已丢弃“.idata$6”(从 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中) + 已丢弃“.idata$6”(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃“.idata$6”(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃“.idata$6”(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃“.idata$6”(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃“.idata$6”(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃“.xdata”(从 glfw3.lib(init.obj) 中) + 已丢弃“.xdata”(从 glfw3.lib(init.obj) 中) + 已丢弃“.xdata”(从 glfw3.lib(init.obj) 中) + 已丢弃“.xdata”(从 glfw3.lib(init.obj) 中) + 已丢弃“.xdata”(从 MSVCRT.lib(gs_report.obj) 中) + 已丢弃“.xdata”(从 MSVCRT.lib(gs_support.obj) 中) + 已丢弃“.xdata”(从 MSVCRT.lib(utility.obj) 中) + 已丢弃“.xdata”(从 MSVCRT.lib(utility.obj) 中) + 已丢弃“.xdata”(从 MSVCRT.lib(utility.obj) 中) + 已丢弃“.xdata”(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃“.xdata”(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃“.xdata”(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃“.xdata”(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃“.xdata”(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃“.xdata”(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃“.xdata”(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃“.xdata”(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃“.xdata”(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 _glfwEncodeUTF8(从 glfw3.lib(init.obj) 中) + 已丢弃 _glfwParseUriList(从 glfw3.lib(init.obj) 中) + 已丢弃 __local_stdio_printf_options(从 glfw3.lib(win32_joystick.obj) 中) + 已丢弃 __report_securityfailureEx(从 MSVCRT.lib(gs_report.obj) 中) + 已丢弃 "int __cdecl dllmain_raw(struct HINSTANCE__ * const,unsigned long,void * const)" (?dllmain_raw@@YAHQEAUHINSTANCE__@@KQEAX@Z)(从 MSVCRT.lib(dll_dllmain.obj) 中) + 已丢弃 _CRT_INIT(从 MSVCRT.lib(dll_dllmain.obj) 中) + 已丢弃 __get_entropy(从 MSVCRT.lib(gs_support.obj) 中) + 已丢弃 __local_stdio_printf_options(从 MSVCRT.lib(default_local_stdio_options.obj) 中) + 已丢弃 __local_stdio_scanf_options(从 MSVCRT.lib(default_local_stdio_options.obj) 中) + 已丢弃 "public: static int __cdecl __scrt_narrow_argv_policy::configure_argv(void)" (?configure_argv@__scrt_narrow_argv_policy@@SAHXZ)(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 "struct _IMAGE_SECTION_HEADER * __cdecl find_pe_section(unsigned char * const,unsigned __int64)" (?find_pe_section@@YAPEAU_IMAGE_SECTION_HEADER@@QEAE_K@Z)(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 "public: static int __cdecl __scrt_narrow_environment_policy::initialize_environment(void)" (?initialize_environment@__scrt_narrow_environment_policy@@SAHXZ)(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 "bool __cdecl is_potentially_valid_image_base(void * const)" (?is_potentially_valid_image_base@@YA_NQEAX@Z)(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 NtCurrentTeb(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 _onexit(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 at_quick_exit(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 atexit(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 __scrt_get_show_window_mode(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 __scrt_initialize_mta(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 __scrt_initialize_winrt(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 __scrt_is_managed_app(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 __scrt_set_unhandled_exception_filter(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 __scrt_unhandled_exception_filter(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 ReadNoFence64(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 ReadPointerNoFence(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_check_failure_debugbreak(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_check_failure_fastfail(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_check_failure_nop(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_check_failure_os_handled(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_check_failure_os_handled_wrapper(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_check_failure_user_handled(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_check_failure_user_handled_wrapper(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_compat_check(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_set_user_handler(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_slow_path_check_debugbreak(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_slow_path_check_fastfail(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_slow_path_check_nop(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_slow_path_check_os_handled(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_slow_path_check_user_handled(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_slow_path_compat_check(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 _guard_icall_checks_enforced(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 _guard_rf_checks_enforced(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __current_exception(从 vcruntime.lib(VCRUNTIME140.dll) 中) + 已丢弃 __current_exception_context(从 vcruntime.lib(VCRUNTIME140.dll) 中) + 已丢弃 ftell(从 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中) + 已丢弃 strtok(从 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中) + 已丢弃 _register_onexit_function(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃 _crt_atexit(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃 _crt_at_quick_exit(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃 terminate(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃 GetStartupInfoW(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 __guard_xfg_check_icall_fptr(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __guard_xfg_dispatch_icall_fptr(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __guard_xfg_table_dispatch_icall_fptr(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_check_failure_os_handled_fptr(从 MSVCRT.lib(guard_support.obj) 中) + 正在生成代码 + 已完成代码的生成 + 正在搜索库 + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\opengl32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\kernel32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\user32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\gdi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\winspool.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\comdlg32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\advapi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\shell32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\ole32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\oleaut32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\uuid.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbc32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbccp32.lib: + 正在搜索 glfw3.lib: + 正在搜索 glfw3dll.lib: + 正在搜索 glfw3_mt.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\MSVCRT.lib: + 已找到 __chkstk + 已在 stb_image.obj 中引用 + 已加载 MSVCRT.lib(chkstk.obj) + 已找到 _tls_index + 已在 stb_image.obj 中引用 + 已加载 MSVCRT.lib(tlssup.obj) + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\OLDNAMES.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\vcruntime.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64\ucrt.lib: + 已找到 pow + 已在 stb_image.obj 中引用 + 已加载 ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\opengl32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\kernel32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\user32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\gdi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\winspool.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\comdlg32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\advapi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\shell32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\ole32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\oleaut32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\uuid.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbc32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbccp32.lib: + 正在搜索 glfw3.lib: + 正在搜索 glfw3dll.lib: + 正在搜索 glfw3_mt.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\MSVCRT.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\OLDNAMES.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\vcruntime.lib: + 已完成库搜索 + 正在搜索库 + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\opengl32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\kernel32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\user32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\gdi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\winspool.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\comdlg32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\advapi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\shell32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\ole32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\oleaut32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\uuid.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbc32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbccp32.lib: + 正在搜索 glfw3.lib: + 正在搜索 glfw3dll.lib: + 正在搜索 glfw3_mt.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\MSVCRT.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\OLDNAMES.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\vcruntime.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64\ucrt.lib: + 已完成库搜索 + 正在搜索库 + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\opengl32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\kernel32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\user32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\gdi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\winspool.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\comdlg32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\advapi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\shell32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\ole32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\oleaut32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\uuid.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbc32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbccp32.lib: + 正在搜索 glfw3.lib: + 正在搜索 glfw3dll.lib: + 正在搜索 glfw3_mt.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\MSVCRT.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\OLDNAMES.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\vcruntime.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64\ucrt.lib: + 已完成库搜索 + 正在搜索库 + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\opengl32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\kernel32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\user32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\gdi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\winspool.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\comdlg32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\advapi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\shell32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\ole32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\oleaut32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\uuid.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbc32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbccp32.lib: + 正在搜索 glfw3.lib: + 正在搜索 glfw3dll.lib: + 正在搜索 glfw3_mt.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\MSVCRT.lib: + 已找到 _load_config_used + 已加载 MSVCRT.lib(loadcfg.obj) + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\OLDNAMES.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\vcruntime.lib: + 已找到 __guard_memcpy_fptr + 已在 MSVCRT.lib(loadcfg.obj) 中引用 + 已加载 vcruntime.lib(softmemtag.obj) + 已完成库搜索 + 未使用的库: + C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\opengl32.lib + C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\winspool.lib + C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\comdlg32.lib + C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\advapi32.lib + C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\ole32.lib + C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\oleaut32.lib + C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\uuid.lib + C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbc32.lib + C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbccp32.lib + glfw3dll.lib + glfw3_mt.lib + C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\OLDNAMES.lib + 正在处理 /ORDER 选项 + 未在 /ORDER 文件中列出的外部代码对象: + ??_C@_0CN@PEBHJDOE@OSMesa?3?5Failed?5to?5load?5required@ ; glfw3.lib(osmesa_context.obj) + ??_C@_0BCO@LKAFPMMB@03000000120c0000101e00000000000@ ; glfw3.lib(input.obj) + ??_C@_0BM@BADCNPOM@Invalid?5value?5for?5parameter@ ; glfw3.lib(init.obj) + glfwIconifyWindow ; glfw3.lib(window.obj) + ??_C@_0DG@CGDLBFFB@Win32?3?5Failed?5to?5allocate?5globa@ ; glfw3.lib(win32_window.obj) + ??_C@_0L@GMPLCCII@user32?4dll@ ; glfw3.lib(win32_init.obj) + glfwGetPlatform ; glfw3.lib(platform.obj) + ??_C@_0L@DMFDIJCG@shcore?4dll@ ; glfw3.lib(win32_init.obj) + __imp_UnregisterDeviceNotification ; user32.lib(USER32.dll) + ??_C@_0CC@DOIEFDD@EGL?3?5Failed?5to?5initialize?5EGL?3?5@ ; glfw3.lib(egl_context.obj) + ??_C@_0N@JENFOGFI@XInput?5Wheel@ ; glfw3.lib(win32_joystick.obj) + ??_C@_0BCO@BGDMHMEJ@030000006f0e0000280100000000000@ ; glfw3.lib(input.obj) + __imp_SetPropW ; user32.lib(USER32.dll) + glfwGetVersion ; glfw3.lib(init.obj) + _glfwInputJoystick ; glfw3.lib(input.obj) + __imp_SetWindowPlacement ; user32.lib(USER32.dll) + _glfwTerminateEGL ; glfw3.lib(egl_context.obj) + glfwPollEvents ; glfw3.lib(window.obj) + ??_C@_0BO@PCKHNBJ@Invalid?5OpenGL?5profile?50x?$CF08X@ ; glfw3.lib(context.obj) + ??_C@_0BH@HPKNFNCE@GetSystemMetricsForDpi@ ; glfw3.lib(win32_init.obj) + _glfwGetVideoModeWin32 ; glfw3.lib(win32_monitor.obj) + ??_C@_0BH@MDCGBFEN@An?5event?5is?5unsignaled@ ; glfw3.lib(vulkan.obj) + ??_C@_0CI@FJDKHGC@OSMesa?3?5Failed?5to?5retrieve?5dept@ ; glfw3.lib(osmesa_context.obj) + ungetc ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ??_C@_0BBO@LNNKKDPA@030000008f0e0000753000000000000@ ; glfw3.lib(input.obj) + ScreenToClient ; user32.lib(USER32.dll) + ??_C@_04JFCNHLLM@back@ ; glfw3.lib(input.obj) + ??_C@_0BC@HEACFLN@OSMesaMakeCurrent@ ; glfw3.lib(osmesa_context.obj) + glfwGetEGLSurface ; glfw3.lib(egl_context.obj) + ToUnicode ; user32.lib(USER32.dll) + ??_C@_0BBM@KEDGELHN@03000000c82d0000203800000000000@ ; glfw3.lib(input.obj) + _glfwInputJoystickAxis ; glfw3.lib(input.obj) + __xmm@00000001000000010000000100000001 ; glfw3.lib(window.obj) + ??_C@_01BMBHCPLG@5@ ; glfw3.lib(null_window.obj) + _DllMainCRTStartup ; MSVCRT.lib(dll_dllmain.obj) + __imp_DefWindowProcW ; user32.lib(USER32.dll) + __xmm@00000003000000030000000300000003 ; dllmain.obj + _glfwGetClipboardStringWin32 ; glfw3.lib(win32_window.obj) + _glfwFreeMonitorNull ; glfw3.lib(null_monitor.obj) + __xmm@00380037003600350034003300320031 ; glfw3.lib(win32_init.obj) + _glfwSetCursorWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0CK@DKAFEDIC@OpenGL?5version?5string?5retrieval@ ; glfw3.lib(context.obj) + InitializeCriticalSection ; kernel32.lib(KERNEL32.dll) + glfwGetJoystickGUID ; glfw3.lib(input.obj) + ??_C@_0BCN@ECJBHADL@030000004c050000e60c00000000000@ ; glfw3.lib(input.obj) + _glfwCreateCursorNull ; glfw3.lib(null_window.obj) + glfwRawMouseMotionSupported ; glfw3.lib(input.obj) + ??_C@_0DN@GNDEENDO@EGL?5failed?5to?5allocate?5resource@ ; glfw3.lib(egl_context.obj) + ??_C@_01NEMOKFLO@?$DN@ ; glfw3.lib(null_window.obj) + IsDebuggerPresent ; kernel32.lib(KERNEL32.dll) + GetCurrentThreadId ; kernel32.lib(KERNEL32.dll) + _glfwCreateContextEGL ; glfw3.lib(egl_context.obj) + __imp_DragFinish ; shell32.lib(SHELL32.dll) + _glfwShowWindowWin32 ; glfw3.lib(win32_window.obj) + PostMessageW ; user32.lib(USER32.dll) + glfwGetWin32Window ; glfw3.lib(win32_window.obj) + __local_stdio_printf_options ; glfw3.lib(init.obj) + glfwWindowShouldClose ; glfw3.lib(window.obj) + __imp_LoadImageW ; user32.lib(USER32.dll) + ??_C@_0BCG@HFMJCAPB@030000005c1a0000333000000000000@ ; glfw3.lib(input.obj) + terminate ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + __guard_xfg_table_dispatch_icall_fptr ; MSVCRT.lib(guard_support.obj) + ??_C@_0BBP@DGIHCNJO@030000003807000056a800000000000@ ; glfw3.lib(input.obj) + ??_C@_0BE@IGCIBFAF@Invalid?5scancode?5?$CFi@ ; glfw3.lib(win32_window.obj) + ??_C@_0EP@OJIEDFOO@The?5display?5used?5by?5a?5swapchain@ ; glfw3.lib(vulkan.obj) + ??_C@_0FH@FIPMKLID@A?5surface?5has?5changed?5in?5such?5a@ ; glfw3.lib(vulkan.obj) + ??_C@_0BBG@DBBHKPMM@030000008f0e0000091000000000000@ ; glfw3.lib(input.obj) + __C_specific_handler ; vcruntime.lib(VCRUNTIME140.dll) + _guard_check_icall_nop ; MSVCRT.lib(guard_support.obj) + ??_C@_0M@PPADKGOK@eglGetError@ ; glfw3.lib(egl_context.obj) + __imp_strcspn ; ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + ??_C@_0BBL@NHKNENLJ@03000000bc200000632100000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCI@MBOCFMGI@0300000038100000181400000000000@ ; glfw3.lib(input.obj) + glfwSetWindowSizeLimits ; glfw3.lib(window.obj) + ??_C@_0BCK@KFEKGGJ@0300000045750000221100000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCN@GIEEMMPB@03000000341a0000360800000000000@ ; glfw3.lib(input.obj) + DragQueryFileW ; shell32.lib(SHELL32.dll) + __xmm@f9c31a9df9c31a9df9c31a9df9c31a9d ; dllmain.obj + ??_C@_0BDA@PJFOCFDI@0300000038070000503200000000000@ ; glfw3.lib(input.obj) + ??_C@_0CE@IKOICJPN@Win32?3?5Failed?5to?5set?5video?5mode@ ; glfw3.lib(win32_monitor.obj) + ??_C@_0O@FNFBHCOO@0?9pixel?5image@ ; stb_image.obj + GlobalFree ; kernel32.lib(KERNEL32.dll) + ??_C@_0BBN@DJKOMBLI@03000000d6200000e55700000000000@ ; glfw3.lib(input.obj) + ??_C@_0DC@CDLECLKD@WGL?3?5Driver?5does?5not?5support?5Op@ ; glfw3.lib(wgl_context.obj) + __imp_GetRawInputDeviceList ; user32.lib(USER32.dll) + ??_C@_0BCF@LMGAPCEG@0300000045130000001000000000000@ ; glfw3.lib(input.obj) + GetProcAddress ; kernel32.lib(KERNEL32.dll) + glfwGetVersionString ; glfw3.lib(platform.obj) + ??_C@_0CC@NIBJMOI@EGL?3?5Failed?5to?5bind?5OpenGL?5ES?3?5@ ; glfw3.lib(egl_context.obj) + ??_C@_0CA@JBEOCDFN@invalid?5decoded?5scanline?5length@ ; stb_image.obj + _glfwGetMonitorWorkareaNull ; glfw3.lib(null_monitor.obj) + __imp_GetModuleHandleExW ; kernel32.lib(KERNEL32.dll) + _glfwCreateContextWGL ; glfw3.lib(wgl_context.obj) + SetWindowPlacement ; user32.lib(USER32.dll) + _glfwIsWindowsVersionOrGreaterWin32 ; glfw3.lib(win32_init.obj) + _glfwWindowVisibleNull ; glfw3.lib(null_window.obj) + ??_C@_09MNNCNKEO@outofdata@ ; stb_image.obj + _glfwPollMonitorsNull ; glfw3.lib(null_monitor.obj) + ??_C@_01JOAMLHOP@?9@ ; glfw3.lib(null_window.obj) + ??_C@_0DC@KIAJNHJN@Requested?5OpenGL?5version?5?$CFi?4?$CFi?0@ ; glfw3.lib(context.obj) + ??_C@_0BBK@FPHOHOII@030000006e050000132000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BDG@JHAIGEPC@0300000079000000431800000000000@ ; glfw3.lib(input.obj) + __scrt_dllmain_before_initialize_c ; MSVCRT.lib(utility.obj) + GlobalUnlock ; kernel32.lib(KERNEL32.dll) + ??_C@_01NBENCBCI@?$CK@ ; glfw3.lib(null_window.obj) + __local_stdio_scanf_options ; glfw3.lib(context.obj) + ??_C@_0BDA@CMOFFENL@030000000d0f0000850000000000000@ ; glfw3.lib(input.obj) + DeleteCriticalSection ; kernel32.lib(KERNEL32.dll) + ??_C@_0EE@LGMAAPCC@WGL?3?5The?5share?5context?5is?5not?5c@ ; glfw3.lib(wgl_context.obj) + _glfwWaitEventsWin32 ; glfw3.lib(win32_window.obj) + _glfwPollMonitorsWin32 ; glfw3.lib(win32_monitor.obj) + ??_C@_0BBM@MJENJJEJ@78696e7075740200000000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BI@LDADLCB@DwmGetColorizationColor@ ; glfw3.lib(win32_init.obj) + ??_C@_0BCF@BIADCONP@03000000d81d00000b0000000000000@ ; glfw3.lib(input.obj) + ??_C@_09EOHLEIKL@bad?5sizes@ ; stb_image.obj + ??_C@_0CG@LDJIJKNI@Win32?3?5Failed?5to?5create?5helper?5@ ; glfw3.lib(win32_init.obj) + ??_C@_0O@IHOLGAKK@Invalid?5flags@ ; glfw3.lib(win32_monitor.obj) + ??_C@_0CA@NIHAEPLD@EGL_ANGLE_platform_angle_opengl@ ; glfw3.lib(egl_context.obj) + glfwInitAllocator ; glfw3.lib(init.obj) + __imp_EnumDisplayMonitors ; user32.lib(USER32.dll) + ??_C@_0O@KAFOJCHN@xinput1_3?4dll@ ; glfw3.lib(win32_init.obj) + _glfwRestoreVideoModeWin32 ; glfw3.lib(win32_monitor.obj) + _initialize_narrow_environment ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ??_C@_0DE@OKHDGAJN@Context?5creation?5APIs?5do?5not?5ma@ ; glfw3.lib(context.obj) + ??_C@_0BCB@GKHPJHJF@03000000f0250000c48300000000000@ ; glfw3.lib(input.obj) + __scrt_stub_for_acrt_thread_detach ; MSVCRT.lib(ucrt_stubs.obj) + glfwSetJoystickCallback ; glfw3.lib(input.obj) + __imp_DragAcceptFiles ; shell32.lib(SHELL32.dll) + ??_C@_0BH@NFNALLIN@EGL?3?5Library?5not?5found@ ; glfw3.lib(egl_context.obj) + ??_C@_0BCB@NICJKIFJ@03000000c82d000020ab00000000000@ ; glfw3.lib(input.obj) + ??_C@_0BI@DCNDPIOH@unsupported?5data?5layout@ ; stb_image.obj + _glfwGetWindowOpacityWin32 ; glfw3.lib(win32_window.obj) + __report_gsfailure ; MSVCRT.lib(gs_report.obj) + ??_C@_0CG@CHGOPGBD@Mapping?5of?5a?5memory?5object?5has?5@ ; glfw3.lib(vulkan.obj) + ??_C@_0CK@DDNMEIKD@No?5version?5found?5in?5OpenGL?5vers@ ; glfw3.lib(context.obj) + ??_C@_0MO@IJHIOCMG@03000000c82d0000286700000000000@ ; glfw3.lib(input.obj) + ??_C@_0CJ@GILDAIDE@Win32?3?5Failed?5to?5retrieve?5raw?5i@ ; glfw3.lib(win32_window.obj) + __imp_DestroyWindow ; user32.lib(USER32.dll) + ldexp ; ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) + ??_C@_0N@PILJCBOD@glGetStringi@ ; glfw3.lib(context.obj) + SetThreadExecutionState ; kernel32.lib(KERNEL32.dll) + ??_C@_0BA@BGJPOLDF@eglSwapInterval@ ; glfw3.lib(egl_context.obj) + ??_C@_08DIAPIMGJ@bad?5dist@ ; stb_image.obj + ??_C@_0L@FACOJKPJ@dwmapi?4dll@ ; glfw3.lib(win32_init.obj) + glfwSetWindowRefreshCallback ; glfw3.lib(window.obj) + ??_C@_0EC@MCALKGHI@Vulkan?3?5Failed?5to?5retrieve?5vkEn@ ; glfw3.lib(vulkan.obj) + ??_C@_0BCC@ICCBMGAM@03000000a306000022f600000000000@ ; glfw3.lib(input.obj) + ??_C@_0BDM@BFJPFEKL@0300000049190000030400000000000@ ; glfw3.lib(input.obj) + ??_C@_0BF@DOIMLJHJ@VK_MVK_macos_surface@ ; glfw3.lib(vulkan.obj) + ??_C@_0O@KBHBNJOK@multiple?5IHDR@ ; stb_image.obj + ReadNoFence64 ; MSVCRT.lib(guard_support.obj) + ??_C@_0BBK@JNJGFNNI@03000000c0110000059100000000000@ ; glfw3.lib(input.obj) + _glfwMaximizeWindowNull ; glfw3.lib(null_window.obj) + ??_C@_0BB@IIMLINA@bad?5huffman?5code@ ; stb_image.obj + GetModuleHandleExW ; kernel32.lib(KERNEL32.dll) + ??_C@_0BJ@MBCLFEBK@EGL_ANGLE_platform_angle@ ; glfw3.lib(egl_context.obj) + ??_C@_0BCH@PKIHDDBI@03000000ac0500005b0500000000000@ ; glfw3.lib(input.obj) + ??_C@_01LPLHEDKD@d@ ; glfw3.lib(null_window.obj) + ??_C@_0CC@BFGHOMNL@WGL_ARB_create_context_robustne@ ; glfw3.lib(wgl_context.obj) + __imp_WindowFromPoint ; user32.lib(USER32.dll) + ??_C@_0BCB@EEEEOCLB@03000000300f0000120100000000000@ ; glfw3.lib(input.obj) + __imp_fclose ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ??_C@_01LFCBOECM@?4@ ; glfw3.lib(null_window.obj) + __imp_TerminateProcess ; kernel32.lib(KERNEL32.dll) + GetMonitorInfoW ; user32.lib(USER32.dll) + ??_C@_0DA@LIIDOJC@Vulkan?3?5Failed?5to?5query?5instanc@ ; glfw3.lib(vulkan.obj) + ??_C@_0BCG@KCOGNPFA@030000000d0f00008b0000000000000@ ; glfw3.lib(input.obj) + __imp_MultiByteToWideChar ; kernel32.lib(KERNEL32.dll) + _glfwInputWindowContentScale ; glfw3.lib(window.obj) + ??_C@_0BCG@FGNJGHJF@03000000c82d0000652800000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCH@KGOLOPPA@030000000d0f00005b0000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCN@JLGOFCN@0300000017270000443100000000000@ ; glfw3.lib(input.obj) + __xmm@08a914e808a914e808a914e808a914e8 ; dllmain.obj + __xmm@12d0046b12d0046b12d0046b12d0046b ; dllmain.obj + CreateDIBSection ; gdi32.lib(GDI32.dll) + GetClipboardData ; user32.lib(USER32.dll) + ??_C@_0BCD@GAEBDFLF@0300000063250000750500000000000@ ; glfw3.lib(input.obj) + ??_C@_0PF@DFFMCMNA@030000006f0e0000240100000000000@ ; glfw3.lib(input.obj) + ??_C@_0BE@BMOJHNDI@WGL_ARB_multisample@ ; glfw3.lib(wgl_context.obj) + __imp_RemovePropW ; user32.lib(USER32.dll) + _glfw_max ; glfw3.lib(init.obj) + __real@40400000 ; dllmain.obj + ??_C@_0ME@JKMAKHPN@030000007e050000072000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCO@NGLDHPOC@030000006b140000010d00000000000@ ; glfw3.lib(input.obj) + _glfw_fmaxf ; glfw3.lib(init.obj) + ClientToScreen ; user32.lib(USER32.dll) + ??_C@_0BC@EOBKJDCM@GL_ARB_robustness@ ; glfw3.lib(context.obj) + ??_C@_0BBM@CNGNJMCJ@03000000c82d0000006000000000000@ ; glfw3.lib(input.obj) + _glfwRequestWindowAttentionNull ; glfw3.lib(null_window.obj) + ??_C@_0BDB@OHAMDKML@0300000038070000818400000000000@ ; glfw3.lib(input.obj) + ChangeDisplaySettingsExW ; user32.lib(USER32.dll) + RegisterDeviceNotificationW ; user32.lib(USER32.dll) + _glfwGetWindowFrameSizeWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0BK@MBEPKAIA@Invalid?5window?5opacity?5?$CFf@ ; glfw3.lib(window.obj) + __imp_ReleaseDC ; user32.lib(USER32.dll) + _glfwSetCursorPosWin32 ; glfw3.lib(win32_window.obj) + _glfwGetVideoModesWin32 ; glfw3.lib(win32_monitor.obj) + ??_C@_0BA@MCNBDLPD@bad?5compression@ ; stb_image.obj + glfwGetWGLContext ; glfw3.lib(wgl_context.obj) + ??_C@_0BBM@IDFPDLMB@0300000066f70000010000000000000@ ; glfw3.lib(input.obj) + ReleaseDC ; user32.lib(USER32.dll) + __imp_EnterCriticalSection ; kernel32.lib(KERNEL32.dll) + _glfwGetMonitorContentScaleWin32 ; glfw3.lib(win32_monitor.obj) + ?_OptionsStorage@?1??__local_stdio_printf_options@@9@9 + ??_C@_0BF@LOGLPPDD@RtlVerifyVersionInfo@ ; glfw3.lib(win32_init.obj) + ??_C@_0O@LCPOPKLJ@rightshoulder@ ; glfw3.lib(input.obj) + DeleteObject ; gdi32.lib(GDI32.dll) + ??_C@_0BL@OAABODH@Invalid?5gamma?5ramp?5size?5?$CFi@ ; glfw3.lib(monitor.obj) + _glfwSetWindowDecoratedNull ; glfw3.lib(null_window.obj) + ??_C@_0LO@FCDDJGBI@03000000a3060000070100000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBP@CNEONNDL@0300000032150000050700000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCK@DCNKADHN@030000006b140000005500000000000@ ; glfw3.lib(input.obj) + __real@3f800000 ; dllmain.obj + glfwSetCursorPos ; glfw3.lib(input.obj) + _glfwSetWindowAspectRatioNull ; glfw3.lib(null_window.obj) + ??_C@_0BBB@JKCCMJLF@0300000085210000020100000000000@ ; glfw3.lib(input.obj) + DestroyIcon ; user32.lib(USER32.dll) + ??_C@_0BCE@LONHMMNE@030000000d0f0000660000000000000@ ; glfw3.lib(input.obj) + _glfwTerminateOSMesa ; glfw3.lib(osmesa_context.obj) + ??_C@_0BG@ELBNFOBA@XInputGetCapabilities@ ; glfw3.lib(win32_init.obj) + ??_C@_0CM@CMAENEMJ@3?44?40?5Win32?5WGL?5Null?5EGL?5OSMesa@ ; glfw3.lib(platform.obj) + ??_C@_0BD@IOGGBMNK@wrong?5color?5format@ ; stb_image.obj + ??_C@_0DC@IPDIACJO@WGL?3?5Failed?5to?5set?5pixel?5format@ ; glfw3.lib(wgl_context.obj) + ??_C@_07IDKIDMGJ@bad?5PNM@ ; stb_image.obj + ??_C@_0CD@HJEBEGLD@A?5platform?9specific?5error?5occur@ ; glfw3.lib(init.obj) + ??_C@_0PB@DCMCKKFD@030000006f0e0000030200000000000@ ; glfw3.lib(input.obj) + __imp_SetCapture ; user32.lib(USER32.dll) + ??_C@_0BAO@BBCMHMGF@0300000032150000000900000000000@ ; glfw3.lib(input.obj) + ??_C@_0BJ@EJOHFDHH@The?5system?5uses?5DualView@ ; glfw3.lib(win32_monitor.obj) + _glfwWindowIconifiedWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0CC@HJEJGDAP@Invalid?5window?5minimum?5size?5?$CFix@ ; glfw3.lib(window.obj) + _glfwInitOSMesa ; glfw3.lib(osmesa_context.obj) + ??_C@_0BAP@BKIFCCAA@030000008f0e00000f3100000000000@ ; glfw3.lib(input.obj) + ??_C@_1O@IBNLCBOC@?$AAG?$AAL?$AAF?$AAW?$AA3?$AA0@ ; glfw3.lib(win32_window.obj) + ??_C@_01LBDDMOBJ@?$FN@ ; glfw3.lib(null_window.obj) + _glfwGetMappingNameWin32 ; glfw3.lib(win32_joystick.obj) + ??_C@_0BF@COCMEDFO@VK_KHR_win32_surface@ ; glfw3.lib(vulkan.obj) + ??_C@_0O@EMKFPNOG@OpenGL?5ES?9CL?5@ ; glfw3.lib(context.obj) + __xmm@00000000000000040000000000000000 ; dllmain.obj + glfwWindowHintString ; glfw3.lib(window.obj) + ??_C@_0DG@EPNPJJLB@WGL?3?5Failed?5to?5retrieve?5PFD?5for@ ; glfw3.lib(wgl_context.obj) + GetWindowLongW ; user32.lib(USER32.dll) + glfwSetWindowSizeCallback ; glfw3.lib(window.obj) + ??_C@_03FOKDFDHG@?$CLX?5@ ; stb_image.obj + __current_exception ; vcruntime.lib(VCRUNTIME140.dll) + ??_C@_0O@LNFLKCMF@xinput1_4?4dll@ ; glfw3.lib(win32_init.obj) + GetRawInputDeviceList ; user32.lib(USER32.dll) + ??_C@_0BB@GHMBNOIP@wglCreateContext@ ; glfw3.lib(wgl_context.obj) + _glfwCreateContextOSMesa ; glfw3.lib(osmesa_context.obj) + _glfwParseUriList ; glfw3.lib(init.obj) + ??_C@_0DF@FCIHEFHD@Vulkan?3?5Window?5surface?5creation@ ; glfw3.lib(vulkan.obj) + ??_C@_0CE@CNKFDGDO@EGL?3?5Stereo?5rendering?5not?5suppo@ ; glfw3.lib(egl_context.obj) + ??_C@_0LF@CJKOEMML@030000009b280000050000000000000@ ; glfw3.lib(input.obj) + _glfwPlatformGetModuleSymbol ; glfw3.lib(win32_module.obj) + GetCursorPos ; user32.lib(USER32.dll) + ??_C@_0CF@OFADCJLJ@A?5requested?5feature?5is?5not?5supp@ ; glfw3.lib(vulkan.obj) + ??_C@_0CJ@JDBBFPLM@Extension?5name?5cannot?5be?5an?5emp@ ; glfw3.lib(context.obj) + ??_C@_0BCB@CDINELNI@03000000f025000021c100000000000@ ; glfw3.lib(input.obj) + glfwCreateStandardCursor ; glfw3.lib(input.obj) + __imp_DeleteCriticalSection ; kernel32.lib(KERNEL32.dll) + __imp_InitializeCriticalSection ; kernel32.lib(KERNEL32.dll) + _glfwGetEGLNativeWindowWin32 ; glfw3.lib(win32_window.obj) + _glfwFreeMonitor ; glfw3.lib(monitor.obj) + __imp_GetActiveWindow ; user32.lib(USER32.dll) + __imp_PtInRect ; user32.lib(USER32.dll) + ??_C@_0BG@NOLDLPP@unsupported?5bit?5depth@ ; stb_image.obj + ??_C@_01BDACAMKP@h@ ; glfw3.lib(null_window.obj) + _glfwTerminateVulkan ; glfw3.lib(vulkan.obj) + __imp_strtok ; ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + _glfwCreateWindowNull ; glfw3.lib(null_window.obj) + MapVirtualKeyW ; user32.lib(USER32.dll) + ?_OptionsStorage@?1??__local_stdio_scanf_options@@9@4_KA ; MSVCRT.lib(default_local_stdio_options.obj) + ??_C@_0CE@GCBEILKL@Win32?3?5Failed?5to?5create?5RGBA?5bi@ ; glfw3.lib(win32_window.obj) + _onexit ; MSVCRT.lib(utility.obj) + ??_C@_0BCD@JIBGPOCI@030000004c050000a00b00000000000@ ; glfw3.lib(input.obj) + _glfwWindowFocusedNull ; glfw3.lib(null_window.obj) + ??_C@_0CH@DNHGEPME@vkEnumerateInstanceExtensionPro@ ; glfw3.lib(vulkan.obj) + _glfwInitJoysticksWin32 ; glfw3.lib(win32_joystick.obj) + ??_C@_0P@JLGKOCGN@bad?5DHT?5header@ ; stb_image.obj + __imp_SwapBuffers ; gdi32.lib(GDI32.dll) + ??_C@_0N@KBPNPPBJ@bad?5req_comp@ ; stb_image.obj + __xmm@0000201c0000201b0000201a00002019 ; glfw3.lib(wgl_context.obj) + glfwGetGamepadName ; glfw3.lib(input.obj) + __dyn_tls_init_callback + ??_C@_0BBK@CPBMMLKK@03000000fa190000f0ff00000000000@ ; glfw3.lib(input.obj) + ??_C@_0CG@GMPEPNKL@WGL?3?5Failed?5to?5retrieve?5DC?5for?5@ ; glfw3.lib(wgl_context.obj) + _glfwPlatformLockMutex ; glfw3.lib(win32_thread.obj) + __imp_SystemParametersInfoW ; user32.lib(USER32.dll) + ??_C@_09MEKLKMGE@leftstick@ ; glfw3.lib(input.obj) + _glfwInputWindowPos ; glfw3.lib(window.obj) + glfwJoystickPresent ; glfw3.lib(input.obj) + ??_C@_0CG@CHEOMKGJ@A?5device?5memory?5allocation?5has?5@ ; glfw3.lib(vulkan.obj) + ??_C@_0BBK@ECLGAJHG@03000000790000001a1800000000000@ ; glfw3.lib(input.obj) + ?__scrt_initialize_type_info@@YAXXZ ; MSVCRT.lib(tncleanup.obj) + IsIconic ; user32.lib(USER32.dll) + ??_C@_0BJ@KDFAHDEK@ERROR?3?5UNKNOWN?5EGL?5ERROR@ ; glfw3.lib(egl_context.obj) + ??_C@_0BCI@EGALPOHP@03000000a30600000cff00000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCC@HHLPIDID@030000000d0f0000550000000000000@ ; glfw3.lib(input.obj) + __xmm@00000009000000080000000c00000004 ; glfw3.lib(win32_joystick.obj) + ??_C@_0BDA@KMJLBBJI@030000000d0f0000490000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BF@NEMNBLEB@An?5event?5is?5signaled@ ; glfw3.lib(vulkan.obj) + ??_C@_0BBE@DMHFNEP@0300000071010000190400000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCE@JNCBHNAG@030000000d0f00006e0000000000000@ ; glfw3.lib(input.obj) + ??_C@_0CD@EGEEPFHF@Win32?3?5Gamma?5ramp?5size?5must?5be?5@ ; glfw3.lib(win32_monitor.obj) + ??_C@_0BCJ@BECCDJOO@030000005e040000130b00000000000@ ; glfw3.lib(input.obj) + glfwSetErrorCallback ; glfw3.lib(init.obj) + ??_C@_01JBBJJEPG@p@ ; glfw3.lib(null_window.obj) + ??_C@_0BL@MOJGOJJP@Failed?5to?5load?5OpenGL?5api?3@ ; StgSharpC.obj + ??_C@_0BD@ENICNPLM@SetProcessDPIAware@ ; glfw3.lib(win32_init.obj) + _glfwRequestWindowAttentionWin32 ; glfw3.lib(win32_window.obj) + _glfw_calloc ; glfw3.lib(init.obj) + ??_C@_0BDO@LBKBGMKN@030000005e040000a10200000000000@ ; glfw3.lib(input.obj) + __castguard_slow_path_check_nop ; MSVCRT.lib(guard_support.obj) + __castguard_slow_path_check_user_handled ; MSVCRT.lib(guard_support.obj) + ??_C@_0P@NNGPHMMK@unknown?5marker@ ; stb_image.obj + RegisterRawInputDevices ; user32.lib(USER32.dll) + ??_C@_0EP@EKHGPGGO@WGL?3?5OpenGL?5ES?5requested?5but?5WG@ ; glfw3.lib(wgl_context.obj) + __real@42112e0be8240000 ; glfw3.lib(input.obj) + ??_C@_0BF@GIAALCNJ@bad?5Image?5Descriptor@ ; stb_image.obj + glfwGetWindowSize ; glfw3.lib(window.obj) + glfwGetWin32Adapter ; glfw3.lib(win32_monitor.obj) + ??_C@_0BCN@FPGGBFLP@030000006f0e0000300100000000000@ ; glfw3.lib(input.obj) + GetLastError ; kernel32.lib(KERNEL32.dll) + strtoul ; ucrt.lib(api-ms-win-crt-convert-l1-1-0.dll) + ??_C@_0O@DEFOLMLB@bad?5size?5list@ ; stb_image.obj + ??_C@_0CJ@HDJDHLNO@Failed?5to?5enumerate?5DirectInput@ ; glfw3.lib(win32_joystick.obj) + _glfwWindowIconifiedNull ; glfw3.lib(null_window.obj) + __imp_strcpy_s ; ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + ??_C@_0BC@CNFMOKHC@max?5value?5?$DO?565535@ ; stb_image.obj + __GSHandlerCheckCommon ; MSVCRT.lib(gshandler.obj) + __xmm@00000004000000040000000800000008 ; dllmain.obj + ??_C@_0DF@BPPFPGID@EGL?3?5Failed?5to?5find?5support?5for@ ; glfw3.lib(egl_context.obj) + ??_C@_0BBL@BGGBHDMD@03000000c0110000055500000000000@ ; glfw3.lib(input.obj) + __imp_GetStartupInfoW ; kernel32.lib(KERNEL32.dll) + __imp__crt_at_quick_exit ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ??_C@_03HKAKGGJN@?9Y?5@ ; stb_image.obj + ??_C@_0BD@MAEGKKAE@eglGetConfigAttrib@ ; glfw3.lib(egl_context.obj) + ??_C@_0PH@JHCLCGIM@030000000d0f0000160000000000780@ ; glfw3.lib(input.obj) + ??_C@_0BK@HMMKMEOH@DwmEnableBlurBehindWindow@ ; glfw3.lib(win32_init.obj) + ??_C@_0N@JCPAJAKB@invalid?5PLTE@ ; stb_image.obj + ??_C@_0BCD@OHMJGKKC@03000000790000004f1800000000000@ ; glfw3.lib(input.obj) + ??_C@_0NL@JGIMNLNL@030000004c050000371300000000000@ ; glfw3.lib(input.obj) + ??_C@_0CC@BPDGBBAB@Invalid?5window?5aspect?5ratio?5?$CFi?3@ ; glfw3.lib(window.obj) + __imp_memset ; vcruntime.lib(VCRUNTIME140.dll) + __xmm@01290128012701260125012401230122 ; glfw3.lib(win32_init.obj) + _glfwTerminateJoysticksNull ; glfw3.lib(null_joystick.obj) + ??_C@_0BCD@GAJAFIPA@030000004c050000c40500000000000@ ; glfw3.lib(input.obj) + __real@3ee8ba2e ; glfw3.lib(null_monitor.obj) + ??_C@_0BA@ENDPGCHB@tRNS?5with?5alpha@ ; stb_image.obj + __xmm@00000002000000020000000200000002 ; dllmain.obj + glfwSetCursorEnterCallback ; glfw3.lib(input.obj) + ??_C@_0BCB@CDNPOFJG@03000000341a0000030200000000000@ ; glfw3.lib(input.obj) + _glfwSetClipboardStringNull ; glfw3.lib(null_window.obj) + realloc ; ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) + glfwGetTimerValue ; glfw3.lib(input.obj) + ??_C@_0BBH@EKFHCAMB@03000000e8200000605800000000000@ ; glfw3.lib(input.obj) + ??_C@_0BI@DHFJCMBA@bad?5SOS?5component?5count@ ; stb_image.obj + ??_C@_0BCI@HBCHBLOC@03000000bc200000005500000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCN@MBGMCHKG@030000006f0e0000140100000000000@ ; glfw3.lib(input.obj) + ??_C@_0M@JPDHFAGK@can?8t?5fopen@ ; stb_image.obj + ??_C@_0CA@MHMAANIG@Win32?3?5Platform?5not?5initialized@ ; glfw3.lib(win32_window.obj) + LoadLibraryA ; kernel32.lib(KERNEL32.dll) + ??_C@_0OJ@OIDHFCIJ@030000006f0e0000090100000000000@ ; glfw3.lib(input.obj) + ??_C@_0BO@NOJEGBJM@Missing?5function?5in?5allocator@ ; glfw3.lib(init.obj) + glfwGetWindowAttrib ; glfw3.lib(window.obj) + ??_C@_1BA@PICGEGJB@?$AAD?$AAI?$AAS?$AAP?$AAL?$AAA?$AAY@ ; glfw3.lib(win32_monitor.obj) + ftell ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ??_C@_0BJ@KIPDFNMM@EGL_EXT_platform_wayland@ ; glfw3.lib(egl_context.obj) + ??_C@_01OJONOECF@b@ ; glfw3.lib(input.obj) + _glfwGetClipboardStringNull ; glfw3.lib(null_window.obj) + __imp_IsZoomed ; user32.lib(USER32.dll) + __imp_TrackMouseEvent ; user32.lib(USER32.dll) + ??_C@_07MALOAKCI@invalid@ ; stb_image.obj + __scrt_initialize_onexit_tables ; MSVCRT.lib(utility.obj) + ??_C@_0PF@JBCCEDOB@03000000300f0000001100000000000@ ; glfw3.lib(input.obj) + ??_C@_0LP@DBLEIEDM@03000000a30c0000240000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBP@KNBKPMNJ@0300000038070000808100000000000@ ; glfw3.lib(input.obj) + __xmm@00000004000000080000000800000008 ; dllmain.obj + glfwSetMouseButtonCallback ; glfw3.lib(input.obj) + ??_C@_0BCO@DODDAFEB@03000000efbe0000edfe00000000000@ ; glfw3.lib(input.obj) + ??_C@_0CB@HHJIGJHK@Win32?3?5Failed?5to?5load?5user32?4dl@ ; glfw3.lib(win32_init.obj) + glfwSetWindowMonitor ; glfw3.lib(window.obj) + __imp_RtlLookupFunctionEntry ; kernel32.lib(KERNEL32.dll) + ??_C@_0CK@DCPJCPHH@EGL?3?5Failed?5to?5load?5required?5en@ ; glfw3.lib(egl_context.obj) + ??_C@_0P@PKABKPLF@Invalid?5key?5?$CFi@ ; glfw3.lib(input.obj) + ??_C@_08CBHCFJJK@platform@ ; glfw3.lib(input.obj) + _glfwAllocJoystick ; glfw3.lib(input.obj) + ??_C@_0BCD@BBICEOLK@78696e7075740300000000000000000@ ; glfw3.lib(input.obj) + ??_C@_0CJ@MHLGDLLP@EGL?3?5Failed?5to?5create?5window?5su@ ; glfw3.lib(egl_context.obj) + ??_C@_0BBG@NOFGFFJE@03000000bc200000601200000000000@ ; glfw3.lib(input.obj) + __imp___C_specific_handler ; vcruntime.lib(VCRUNTIME140.dll) + ??_C@_06NDOKKIDJ@?$CD?$DPRGBE@ ; stb_image.obj + ??_C@_0BCE@LLLAMHO@030000004f04000007d000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BA@OBKOPAFL@bad?5zlib?5header@ ; stb_image.obj + _glfwInputMonitor ; glfw3.lib(monitor.obj) + ??_C@_0BB@CNEIGGLC@Null?5SuperNoop?50@ ; glfw3.lib(null_monitor.obj) + ??_C@_0CE@PCLEMLLO@The?5requested?5format?5is?5unavail@ ; glfw3.lib(init.obj) + __report_securityfailure ; MSVCRT.lib(gs_report.obj) + __real@46ffff00 ; glfw3.lib(win32_joystick.obj) + __imp_qsort ; ucrt.lib(api-ms-win-crt-utility-l1-1-0.dll) + __imp_CloseClipboard ; user32.lib(USER32.dll) + _glfwDestroyCursorNull ; glfw3.lib(null_window.obj) + glfwGetWindowMonitor ; glfw3.lib(window.obj) + ??_C@_0BBO@HLNJIBPP@78696e7075740100000000000000000@ ; glfw3.lib(input.obj) + __scrt_stub_for_acrt_uninitialize_critical ; MSVCRT.lib(ucrt_stubs.obj) + FlashWindow ; user32.lib(USER32.dll) + _glfwFramebufferTransparentNull ; glfw3.lib(null_window.obj) + _glfwWindowFocusedWin32 ; glfw3.lib(win32_window.obj) + strncpy ; ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + __imp_CreateWindowExW ; user32.lib(USER32.dll) + __imp_DestroyIcon ; user32.lib(USER32.dll) + ??_C@_0CA@LDAANPIM@Entry?5point?5retrieval?5is?5broken@ ; glfw3.lib(context.obj) + __scrt_unhandled_exception_filter ; MSVCRT.lib(utility_desktop.obj) + glfwGetPrimaryMonitor ; glfw3.lib(monitor.obj) + ??_C@_0MH@GNCKGMLL@03000000c82d0000801000000000000@ ; glfw3.lib(input.obj) + __castguard_check_failure_user_handled ; MSVCRT.lib(guard_support.obj) + ??_C@_0BBN@EJPLMIPB@03000000bd12000003c000001001000@ ; glfw3.lib(input.obj) + ??_C@_0BDE@CKLILCMC@030000005e040000ff0200000000000@ ; glfw3.lib(input.obj) + SetCursor ; user32.lib(USER32.dll) + _glfwPlatformLoadModule ; glfw3.lib(win32_module.obj) + ??_C@_0CL@JEJIBJNG@Win32?3?5Failed?5to?5convert?5string@ ; glfw3.lib(win32_init.obj) + __imp_ChangeDisplaySettingsExW ; user32.lib(USER32.dll) + ??_C@_0CI@NAJLKNKH@OSMesa?3?5Failed?5to?5retrieve?5colo@ ; glfw3.lib(osmesa_context.obj) + __imp_RtlCaptureContext ; kernel32.lib(KERNEL32.dll) + ??_C@_0BA@MDMBDDFG@bad?5comp?5method@ ; stb_image.obj + ??_C@_0BCE@MNGEPDHI@03000000786901006e7000000000000@ ; glfw3.lib(input.obj) + ??_C@_07DPPMCAKL@corrupt@ ; stb_image.obj + ??_C@_0BBM@OJGJOKHO@0300000034120000adbe00000000000@ ; glfw3.lib(input.obj) + ??_C@_0CE@KAEELGKL@WGL?3?5Failed?5to?5create?5dummy?5con@ ; glfw3.lib(wgl_context.obj) + __imp_CreateDIBSection ; gdi32.lib(GDI32.dll) + ??_C@_0BBK@GEMHLGCN@0300000049190000020400000000000@ ; glfw3.lib(input.obj) + ??_C@_0BN@FNDGKECA@GL_KHR_context_flush_control@ ; glfw3.lib(context.obj) + ??_C@_0CB@HAFFDHLH@The?5requested?5API?5is?5unavailabl@ ; glfw3.lib(init.obj) + ??_C@_0BBF@BFOGCKNH@030000000d0f00002d0000000000000@ ; glfw3.lib(input.obj) + ??_C@_0CD@JDEAKJCI@EGL?3?5Failed?5to?5load?5client?5libr@ ; glfw3.lib(egl_context.obj) + ??_C@_0BH@OBINMOBC@integer?5parse?5overflow@ ; stb_image.obj + __imp_GetRawInputData ; user32.lib(USER32.dll) + __imp_GlobalAlloc ; kernel32.lib(KERNEL32.dll) + _glfwSetWindowSizeLimitsNull ; glfw3.lib(null_window.obj) + _glfwSetWindowSizeWin32 ; glfw3.lib(win32_window.obj) + CreateDCW ; gdi32.lib(GDI32.dll) + __xmm@00000006000000020000000300000001 ; glfw3.lib(win32_joystick.obj) + ??_C@_0BAC@DNICHFEF@03000000341a0000010800000000000@ ; glfw3.lib(input.obj) + ??_C@_0CB@FLGENKMO@WGL?3?5Failed?5to?5load?5opengl32?4dl@ ; glfw3.lib(wgl_context.obj) + ??_C@_0BL@PBGFNEKP@Invalid?5platform?5ID?50x?$CF08X@ ; glfw3.lib(platform.obj) + SetDeviceGammaRamp ; gdi32.lib(GDI32.dll) + SetWindowTextW ; user32.lib(USER32.dll) + _glfwSetWindowMousePassthroughWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0CF@GFMDJIA@WGL?3?5Failed?5to?5create?5OpenGL?5co@ ; glfw3.lib(wgl_context.obj) + _glfwSetWindowOpacityWin32 ; glfw3.lib(win32_window.obj) + glfwExtensionSupported ; glfw3.lib(context.obj) + ??_C@_0BCF@BMOGEGNJ@03000000c82d0000016000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCG@GLPHDIGN@03000000d620000010a700000000000@ ; glfw3.lib(input.obj) + InitializeSListHead ; kernel32.lib(KERNEL32.dll) + __imp__execute_onexit_table ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ??_C@_0CE@BEELAIPG@The?5GLFW?5library?5is?5not?5initial@ ; glfw3.lib(init.obj) + ??_C@_02JDPG@rb@ ; stb_image.obj + glfwGetRequiredInstanceExtensions ; glfw3.lib(vulkan.obj) + _glfwPlatformGetTimerValue ; glfw3.lib(win32_time.obj) + ??_C@_0M@JGMCBLGG@bad?5AC?5huff@ ; stb_image.obj + __scrt_stub_for_initialize_mta ; MSVCRT.lib(utility_desktop.obj) + glfwSetWindowUserPointer ; glfw3.lib(window.obj) + ??_C@_0BCG@JDIGBKMP@030000000d0f00006a0000000000000@ ; glfw3.lib(input.obj) + strspn ; ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + SetFocus ; user32.lib(USER32.dll) + ??_C@_0BDC@PMNHHHHJ@03000000c82d0000012100000000000@ ; glfw3.lib(input.obj) + _guard_icall_checks_enforced ; MSVCRT.lib(guard_support.obj) + ??_C@_0BBP@NCCKJBD@030000006d04000016c200000000000@ ; glfw3.lib(input.obj) + ??_C@_07EEJOMGGP@bad?5SOS@ ; stb_image.obj + TlsAlloc ; kernel32.lib(KERNEL32.dll) + fread ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ??_C@_09FLKFJBLM@ntdll?4dll@ ; glfw3.lib(win32_init.obj) + ??_C@_0BCH@LIIGHPB@03000000d62000006d5700000000000@ ; glfw3.lib(input.obj) + SetRect ; user32.lib(USER32.dll) + SetWindowLongW ; user32.lib(USER32.dll) + ??_C@_0BBD@DBNHIIMF@0300000025090000e80300000000000@ ; glfw3.lib(input.obj) + ??_C@_0BP@CDGGFNNF@EGL_KHR_get_all_proc_addresses@ ; glfw3.lib(egl_context.obj) + ??_C@_0BF@JHMFGJBN@Graphics?5mode?5failed@ ; glfw3.lib(win32_monitor.obj) + ??_C@_0LO@BOPGPFGO@03000000ff000000cb0100000000000@ ; glfw3.lib(input.obj) + ??_C@_0L@PJHPAMCH@bad?5header@ ; stb_image.obj + ??_C@_0BI@POJNLJDO@Invalid?5mouse?5button?5?$CFi@ ; glfw3.lib(input.obj) + ??_C@_0OH@PKEJNDDF@030000000d0f0000870000000000000@ ; glfw3.lib(input.obj) + ??_C@_01GBGANLPD@0@ ; glfw3.lib(null_window.obj) + ??_C@_0BF@FMIKFMMH@EGL_EXT_platform_x11@ ; glfw3.lib(egl_context.obj) + ??_C@_0OG@DMCABHAN@030000009b280000600000000000000@ ; glfw3.lib(input.obj) + __imp_LoadCursorW ; user32.lib(USER32.dll) + glfwSetJoystickUserPointer ; glfw3.lib(input.obj) + _glfwIsWindows10BuildOrGreaterWin32 ; glfw3.lib(win32_init.obj) + ??_C@_0KB@PHAGMDLE@03000000a30c0000250000000000000@ ; glfw3.lib(input.obj) + __castguard_check_failure_os_handled_fptr ; MSVCRT.lib(guard_support.obj) + ??_C@_0CC@HDNEDJNI@A?5validation?5layer?5found?5an?5err@ ; glfw3.lib(vulkan.obj) + ??_C@_0BCH@KDJCJEOK@03000000300f0000070100000000000@ ; glfw3.lib(input.obj) + DragAcceptFiles ; shell32.lib(SHELL32.dll) + ??_C@_0BCF@MBPBHECE@03000000c82d0000009000000000000@ ; glfw3.lib(input.obj) + ??_C@_0CI@MPJNGPNP@EGL?3?5Failed?5to?5make?5context?5cur@ ; glfw3.lib(egl_context.obj) + glfwGetJoystickButtons ; glfw3.lib(input.obj) + _glfwUpdateGamepadGUIDNull ; glfw3.lib(null_joystick.obj) + GetMessageTime ; user32.lib(USER32.dll) + __imp_terminate ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ??_C@_0BCO@GFHGFBHD@030000004f04000004b300000000000@ ; glfw3.lib(input.obj) + ??_C@_07IANEBNLB@not?5BMP@ ; stb_image.obj + __imp_malloc ; ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) + ??_C@_0BCO@NPMGKBDH@030000006f0e00002f0100000000000@ ; glfw3.lib(input.obj) + ??_C@_0BA@MDNKOBMC@bad?5codelengths@ ; stb_image.obj + glfwGetTime ; glfw3.lib(input.obj) + _glfwPlatformUnlockMutex ; glfw3.lib(win32_thread.obj) + ??_C@_07CAIJGPF@file?3?1?1@ ; glfw3.lib(init.obj) + glfwSetInputMode ; glfw3.lib(input.obj) + __imp_LoadLibraryA ; kernel32.lib(KERNEL32.dll) + _glfwWaitEventsNull ; glfw3.lib(null_window.obj) + _glfwPlatformGetTimerFrequency ; glfw3.lib(win32_time.obj) + _glfwInputKey ; glfw3.lib(input.obj) + _glfwGetCursorPosWin32 ; glfw3.lib(win32_window.obj) + glfwGetJoystickHats ; glfw3.lib(input.obj) + glfwSetWindowFocusCallback ; glfw3.lib(window.obj) + _glfwInputErrorWin32 ; glfw3.lib(win32_init.obj) + ??_C@_0BCE@DAIILIHH@0300000011010000311400000000000@ ; glfw3.lib(input.obj) + __imp_SetLayeredWindowAttributes ; user32.lib(USER32.dll) + _glfwSetClipboardStringWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0P@FBBCPGMN@invalid?5filter@ ; stb_image.obj + _glfwCreateCursorWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0O@GLACEBNI@xinput1_2?4dll@ ; glfw3.lib(win32_init.obj) + ??_C@_0P@DOGMHEBI@no?5preset?5dict@ ; stb_image.obj + strcpy_s ; ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + GetWindowRect ; user32.lib(USER32.dll) + WindowFromPoint ; user32.lib(USER32.dll) + _crt_atexit ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + GetDeviceGammaRamp ; gdi32.lib(GDI32.dll) + ??_C@_07ECNCNLIK@not?5PSD@ ; stb_image.obj + __imp_ToUnicode ; user32.lib(USER32.dll) + ??_C@_0O@NALGGDJF@Out?5of?5memory@ ; glfw3.lib(init.obj) + ??_C@_0CC@NOHNODHG@Invalid?5window?5maximum?5size?5?$CFix@ ; glfw3.lib(window.obj) + ??_C@_0CK@JKJFDJLH@WGL?3?5Failed?5to?5make?5dummy?5conte@ ; glfw3.lib(wgl_context.obj) + ??_C@_0OG@IHHMBDDK@030000009b280000320000000000000@ ; glfw3.lib(input.obj) + __real@3fdd1745c0000000 ; dllmain.obj + ??_C@_0BH@NCJDMLMG@WGL_ARB_create_context@ ; glfw3.lib(wgl_context.obj) + glfwWindowHint ; glfw3.lib(window.obj) + RemovePropW ; user32.lib(USER32.dll) + ??_C@_0BBJ@GCDIHNCJ@03000000b8050000041000000000000@ ; glfw3.lib(input.obj) + __imp___current_exception_context ; vcruntime.lib(VCRUNTIME140.dll) + __imp_FreeLibrary ; kernel32.lib(KERNEL32.dll) + ??_C@_0BBI@BNPIODHF@03000000101c0000171c00000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCA@OLMCGDIA@03000000c82d0000202800000000000@ ; glfw3.lib(input.obj) + _glfwSetWindowIconNull ; glfw3.lib(null_window.obj) + ??_C@_0BCF@HEDDGGCD@030000004f04000015b300000000000@ ; glfw3.lib(input.obj) + __imp_fgetc ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + glfwGetPhysicalDevicePresentationSupport ; glfw3.lib(vulkan.obj) + ??_C@_0BCG@MGGCIPBD@03000000bd12000002e000000000000@ ; glfw3.lib(input.obj) + ??_C@_0N@OJEJPFOD@504944564944@ ; glfw3.lib(win32_joystick.obj) + ??_C@_0EK@HBJBDMAL@Cannot?5make?5current?5with?5a?5wind@ ; glfw3.lib(context.obj) + ??_C@_0EE@ICKHNPHB@An?5EGLDisplay?5argument?5does?5not@ ; glfw3.lib(egl_context.obj) + ??_C@_0BBM@PJHGKLCN@03000000300f00000b0100000000000@ ; glfw3.lib(input.obj) + ??_C@_0DA@IIGLKABA@Win32?3?5Failed?5to?5convert?5joysti@ ; glfw3.lib(win32_joystick.obj) + ??_C@_0L@CEBLLDFF@GLESv2?4dll@ ; glfw3.lib(egl_context.obj) + ??_C@_0CH@KLCPDMM@EGL?5is?5not?5or?5could?5not?5be?5init@ ; glfw3.lib(egl_context.obj) + ??_C@_0KI@EKGGNLIH@030000004f04000087b600000000000@ ; glfw3.lib(input.obj) + ??_C@_0M@GNEHAHOH@bad?5SOS?5len@ ; stb_image.obj + __imp_ldexp ; ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) + _glfwChooseFBConfig ; glfw3.lib(context.obj) + ??_C@_0BCD@MDFEPGHO@030000006b140000010c00000000000@ ; glfw3.lib(input.obj) + __imp_SetRect ; user32.lib(USER32.dll) + glfwSetCursor ; glfw3.lib(input.obj) + ??_C@_0CO@HAIMLOLL@EGL?3?5Failed?5to?5find?5support?5for@ ; glfw3.lib(egl_context.obj) + GetLayeredWindowAttributes ; user32.lib(USER32.dll) + _glfwPostEmptyEventWin32 ; glfw3.lib(win32_window.obj) + IsProcessorFeaturePresent ; kernel32.lib(KERNEL32.dll) + ??_C@_0OJ@OOLHGLBN@03000000d8140000086200000000000@ ; glfw3.lib(input.obj) + glfwGetMonitorWorkarea ; glfw3.lib(monitor.obj) + ??_C@_0BBL@MNJAPGHD@03000000bc200000631200000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBJ@MLHIDNOG@03000000b8050000061000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBP@BICCDPK@030000000d0f00004d0000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBP@CEOMIJKI@030000006d040000d1ca00000000000@ ; glfw3.lib(input.obj) + __imp_MapVirtualKeyW ; user32.lib(USER32.dll) + __imp_SetCursor ; user32.lib(USER32.dll) + __imp_strtol ; ucrt.lib(api-ms-win-crt-convert-l1-1-0.dll) + ??_C@_0ME@PAHEPGN@030000007e050000072000000100000@ ; glfw3.lib(input.obj) + _glfwSetRawMouseMotionWin32 ; glfw3.lib(win32_window.obj) + _glfwSetWindowFloatingNull ; glfw3.lib(null_window.obj) + ??_C@_01NOFIACDB@w@ ; glfw3.lib(null_window.obj) + QueryPerformanceFrequency ; kernel32.lib(KERNEL32.dll) + __castguard_check_failure_debugbreak ; MSVCRT.lib(guard_support.obj) + __imp___stdio_common_vsscanf ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ??_C@_0BF@HABDPBMA@wglGetCurrentContext@ ; glfw3.lib(wgl_context.obj) + ?initialize_environment@__scrt_narrow_environment_policy@@SAHXZ ; MSVCRT.lib(utility.obj) + glfwWaitEvents ; glfw3.lib(window.obj) + ??_C@_0LJ@DONCMJNG@03000000c82d0000035100000000000@ ; glfw3.lib(input.obj) + free ; ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) + __imp_SetWindowTextW ; user32.lib(USER32.dll) + ??_C@_0BBJ@KBEDPJIE@030000008f0e0000030000000000000@ ; glfw3.lib(input.obj) + _glfwInitJoysticksNull ; glfw3.lib(null_joystick.obj) + __xmm@fa7efa7efa7efa7efa7efa7efa7efa7e ; dllmain.obj + LoadImageW ; user32.lib(USER32.dll) + DestroyWindow ; user32.lib(USER32.dll) + __imp_IsDebuggerPresent ; kernel32.lib(KERNEL32.dll) + __imp_GetSystemTimeAsFileTime ; kernel32.lib(KERNEL32.dll) + MsgWaitForMultipleObjects ; user32.lib(USER32.dll) + ??_C@_0CA@LFIDGAHJ@Invalid?5OpenGL?5ES?5version?5?$CFi?4?$CFi@ ; glfw3.lib(context.obj) + _glfwSetWindowMousePassthroughNull ; glfw3.lib(null_window.obj) + ??_C@_0PF@BCABPIDK@030000006e050000072000000000000@ ; glfw3.lib(input.obj) + __imp_GetSystemMetrics ; user32.lib(USER32.dll) + ??_C@_0BDA@HBJEDFJC@0300000038070000508200000000000@ ; glfw3.lib(input.obj) + ??_C@_08GGMBIFE@bad?5file@ ; stb_image.obj + ??_C@_0CJ@KOFEFGNB@The?5requested?5API?5version?5is?5un@ ; glfw3.lib(init.obj) + ??_C@_0BBP@NILOBHMB@0300000032150000070700000000000@ ; glfw3.lib(input.obj) + ??_C@_0BF@CJMIIMBG@GL_ARB_compatibility@ ; glfw3.lib(context.obj) + ??_C@_0O@KOJFNJDA@GLESv1_CM?4dll@ ; glfw3.lib(egl_context.obj) + _glfwPollJoystickNull ; glfw3.lib(null_joystick.obj) + ??_C@_0EF@NMJGLODJ@Cannot?5query?5extension?5without?5@ ; glfw3.lib(context.obj) + GetCurrentProcess ; kernel32.lib(KERNEL32.dll) + ??_C@_0MA@LPHGGGL@0300000025090000012800000000000@ ; glfw3.lib(input.obj) + __imp_GetKeyState ; user32.lib(USER32.dll) + ??_C@_0BBG@BDLNPAJM@03000000242f0000730000000000000@ ; glfw3.lib(input.obj) + _glfwPollEventsNull ; glfw3.lib(null_window.obj) + _glfwInputCursorEnter ; glfw3.lib(input.obj) + __scrt_uninitialize_crt ; MSVCRT.lib(utility.obj) + ??_C@_01FDFGLJHB@2@ ; glfw3.lib(null_window.obj) + ??_C@_07KFDJIKCK@?$CD?$DPRGBE?6@ ; stb_image.obj + __imp_realloc ; ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) + glfwSetDropCallback ; glfw3.lib(input.obj) + __xmm@00000000000000010003600100030001 ; glfw3.lib(window.obj) + _glfwSetRawMouseMotionNull ; glfw3.lib(null_window.obj) + __scrt_is_ucrt_dll_in_use ; MSVCRT.lib(ucrt_detection.obj) + ??_C@_01JEJKBAGA@g@ ; glfw3.lib(null_window.obj) + GetWindowPlacement ; user32.lib(USER32.dll) + _glfwWindowHoveredNull ; glfw3.lib(null_window.obj) + ??_C@_0EE@FBMMOIJB@A?5NativeWindowType?5argument?5doe@ ; glfw3.lib(egl_context.obj) + ??_C@_0PP@COADMKLJ@030000006d0400000ac200000000000@ ; glfw3.lib(input.obj) + _glfwFreeJoystick ; glfw3.lib(input.obj) + ??_C@_07IEJCHBDI@bad?5BMP@ ; stb_image.obj + ??_C@_06EOBKMJJD@righty@ ; glfw3.lib(input.obj) + glfwSetClipboardString ; glfw3.lib(input.obj) + __xmm@11c8e09e11c8e09e11c8e09e11c8e09e ; dllmain.obj + LeaveCriticalSection ; kernel32.lib(KERNEL32.dll) + __imp_GetClipboardData ; user32.lib(USER32.dll) + __scrt_is_nonwritable_in_current_image ; MSVCRT.lib(utility.obj) + ??_C@_0BCG@NFDJDGAI@0300000079000000d21800000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBB@HMBGBDKD@03000000fa190000070600000000000@ ; glfw3.lib(input.obj) + ??_C@_0P@PNPBPNLI@eglMakeCurrent@ ; glfw3.lib(egl_context.obj) + ??_C@_0BCF@IAGAPBPO@030000000d0f0000090000000000000@ ; glfw3.lib(input.obj) + _glfwRefreshContextAttribs ; glfw3.lib(context.obj) + ??_C@_0BBK@KLAOAEFP@0300000063250000230600000000000@ ; glfw3.lib(input.obj) + _glfwPlatformFreeModule ; glfw3.lib(win32_module.obj) + ??_C@_0BH@JFGBLLKC@FORMAT?$DN32?9bit_rle_rgbe@ ; stb_image.obj + ??_C@_0CJ@HAGOIHNO@WGL?3?5Failed?5to?5set?5selected?5pix@ ; glfw3.lib(wgl_context.obj) + __imp_UnregisterClassW ; user32.lib(USER32.dll) + ?_OptionsStorage@?1??__local_stdio_scanf_options@@9@9 + fclose ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ??_C@_0M@ONOEDIJO@dinput8?4dll@ ; glfw3.lib(win32_init.obj) + atexit ; MSVCRT.lib(utility.obj) + ??_C@_04KBFEPHFH@S?$IA?v4@ ; stb_image.obj + ??_C@_0BDD@MHIPFANA@0300000049190000190400000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBO@ILBJPILH@030000006f0e0000141300000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBK@LLHMDGJD@03000000120c0000f61c00000000000@ ; glfw3.lib(input.obj) + SetLayeredWindowAttributes ; user32.lib(USER32.dll) + __imp_TlsSetValue ; kernel32.lib(KERNEL32.dll) + WaitMessage ; user32.lib(USER32.dll) + ??_C@_0CI@JDDJIGNN@Invalid?5context?5release?5behavio@ ; glfw3.lib(context.obj) + GetRawInputData ; user32.lib(USER32.dll) + __real@ffefffffffffffff ; glfw3.lib(input.obj) + ??_C@_0BL@MIAEELOL@OSMesaCreateContextAttribs@ ; glfw3.lib(osmesa_context.obj) + _glfwTerminateJoysticksWin32 ; glfw3.lib(win32_joystick.obj) + ??_C@_0BCG@PCDGGODL@03000000c62400001a8900000000000@ ; glfw3.lib(input.obj) + ??_C@_0BD@IJCCAMHG@DirectInput8Create@ ; glfw3.lib(win32_init.obj) + ??_C@_0BBO@PNIOEBFD@0300000079000000020000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BH@JADLEPAM@EGL_EXT_present_opaque@ ; glfw3.lib(egl_context.obj) + EnumDisplaySettingsExW ; user32.lib(USER32.dll) + ??_C@_01KICIPPFI@?2@ ; glfw3.lib(null_window.obj) + __GSHandlerCheck ; MSVCRT.lib(gshandler.obj) + ??_C@_0OO@CIFMNJJH@030000004f0400000ab100000000000@ ; glfw3.lib(input.obj) + __imp_VerSetConditionMask ; kernel32.lib(KERNEL32.dll) + __imp___stdio_common_vsprintf ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ??_C@_0BM@IGBABBBF@Failed?5to?5write?5to?5registry@ ; glfw3.lib(win32_monitor.obj) + ??_C@_0BA@PCPJHDKJ@tRNS?5after?5IDAT@ ; stb_image.obj + ??_C@_0BBM@NFNOIOJB@0300000063250000260500000000000@ ; glfw3.lib(input.obj) + ??_C@_08NOGIMCHF@outofmem@ ; stb_image.obj + __imp_RegisterDeviceNotificationW ; user32.lib(USER32.dll) + ??_C@_07EAKGIKCB@EGL?4dll@ ; glfw3.lib(egl_context.obj) + __imp_SetFocus ; user32.lib(USER32.dll) + ??_C@_0BC@FFKMKEGM@wglGetProcAddress@ ; glfw3.lib(wgl_context.obj) + ??_C@_0ED@FEABOOIM@Context?5profiles?5are?5only?5defin@ ; glfw3.lib(context.obj) + CreateWindowExW ; user32.lib(USER32.dll) + glfwSetMonitorCallback ; glfw3.lib(monitor.obj) + __imp_strncmp ; ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + _glfwGetVideoModesNull ; glfw3.lib(null_monitor.obj) + ??_C@_0BCE@MPKCEKIF@030000006b14000001a100000000000@ ; glfw3.lib(input.obj) + __imp___std_type_info_destroy_list ; vcruntime.lib(VCRUNTIME140.dll) + ??_C@_0GG@ODICGIHF@The?5current?5surface?5of?5the?5call@ ; glfw3.lib(egl_context.obj) + __imp_ftell ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + glfwGetMonitorPos ; glfw3.lib(monitor.obj) + ferror ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + _glfwPollEventsWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0BBP@HFNLKKMF@030000000d0f0000540000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCB@GILNGNCB@0300000025090000668800000000000@ ; glfw3.lib(input.obj) + _glfwInputScroll ; glfw3.lib(input.obj) + ??_C@_0EH@CMDCLIEA@Forward?9compatibility?5is?5only?5d@ ; glfw3.lib(context.obj) + strtok ; ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + ??_C@_0M@EENLKPDI@bad?5APP?5len@ ; stb_image.obj + __imp_EmptyClipboard ; user32.lib(USER32.dll) + ??_C@_01MHEDDDHA@v@ ; glfw3.lib(null_window.obj) + __imp_BringWindowToTop ; user32.lib(USER32.dll) + ??_C@_0CH@GBHCOIGC@A?5fence?5or?5query?5has?5not?5yet?5co@ ; glfw3.lib(vulkan.obj) + ??_C@_0BCG@GAMGMHOH@03000000c82d0000026100000000000@ ; glfw3.lib(input.obj) + ??_C@_0BH@MDMCFBDG@eglCreateWindowSurface@ ; glfw3.lib(egl_context.obj) + _glfwGetKeyScancodeWin32 ; glfw3.lib(win32_window.obj) + __imp_strtoul ; ucrt.lib(api-ms-win-crt-convert-l1-1-0.dll) + ??_C@_0DF@EFFMOKHE@Requested?5OpenGL?5ES?5version?5?$CFi?4@ ; glfw3.lib(context.obj) + __xmm@013501340133013201310130012f012e ; glfw3.lib(win32_init.obj) + ??_C@_05NDJBMDKM@lefty@ ; glfw3.lib(input.obj) + _glfwFramebufferTransparentWin32 ; glfw3.lib(win32_window.obj) + ReadPointerNoFence ; MSVCRT.lib(guard_support.obj) + ??_C@_0BCO@JIFBCBLK@0300000055090000147200000000000@ ; glfw3.lib(input.obj) + ??_C@_0BF@INJHJNOL@OSMesaGetProcAddress@ ; glfw3.lib(osmesa_context.obj) + _glfwPlatformSetTls ; glfw3.lib(win32_thread.obj) + ??_C@_0BCK@OFGGBLGN@03000000d62000001d5700000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBN@MLCKKOPD@030000002a060000102400000000000@ ; glfw3.lib(input.obj) + glfwCreateCursor ; glfw3.lib(input.obj) + ??_C@_0M@EPMOIECP@bad?5DNL?5len@ ; stb_image.obj + ??_C@_0CH@CKFBCGDL@OSMesa?3?5Failed?5to?5make?5context?5@ ; glfw3.lib(osmesa_context.obj) + ??_C@_0CP@FOBJNCLA@vkGetPhysicalDeviceWin32Present@ ; glfw3.lib(win32_window.obj) + ??_C@_0BCA@KPDCPHP@78696e7075740500000000000000000@ ; glfw3.lib(input.obj) + ??_C@_01GEODFPGF@?8@ ; glfw3.lib(null_window.obj) + _glfwSetCursorPosNull ; glfw3.lib(null_window.obj) + ??_C@_0BDC@BPGFOMKB@03000000782300000a1000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCA@LOJNHICN@03000000a30600000b0400000000000@ ; glfw3.lib(input.obj) + ??_C@_01MCMALHOG@a@ ; glfw3.lib(input.obj) + ??_C@_0EO@EKFIJHGG@An?5unrecognized?5attribute?5or?5at@ ; glfw3.lib(egl_context.obj) + __imp_PostMessageW ; user32.lib(USER32.dll) + ??_C@_0CK@NHHHNGID@The?5specified?5cursor?5shape?5is?5u@ ; glfw3.lib(init.obj) + ??_C@_0BB@PIPBCKIA@read?5past?5buffer@ ; stb_image.obj + CreateIconIndirect ; user32.lib(USER32.dll) + glfwInitHint ; glfw3.lib(init.obj) + GetDeviceCaps ; gdi32.lib(GDI32.dll) + ??_C@_01KMDKNFGN@?1@ ; glfw3.lib(null_window.obj) + SwapBuffers ; gdi32.lib(GDI32.dll) + __imp__seh_filter_dll ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + RtlVirtualUnwind ; kernel32.lib(KERNEL32.dll) + __stdio_common_vsprintf ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + __imp_GetWindowRect ; user32.lib(USER32.dll) + ??_C@_0BAP@FBAIDBI@0300000015200000018200000000000@ ; glfw3.lib(input.obj) + glfwSetGamma ; glfw3.lib(monitor.obj) + _glfwSetWindowResizableNull ; glfw3.lib(null_window.obj) + ??_C@_0BCE@JJDBCGKI@03000000c82d0000003100000000000@ ; glfw3.lib(input.obj) + ??_C@_06LJIHDFHI@bad?5TQ@ ; stb_image.obj + ??_C@_0DD@OOKDLCED@A?5requested?5format?5is?5not?5suppo@ ; glfw3.lib(vulkan.obj) + VerSetConditionMask ; kernel32.lib(KERNEL32.dll) + ??_C@_0CI@LDEHPBDB@Win32?3?5Failed?5to?5create?5standar@ ; glfw3.lib(win32_window.obj) + _glfwGetRequiredInstanceExtensionsWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0FE@ILJLDKCD@A?5swapchain?5no?5longer?5matches?5t@ ; glfw3.lib(vulkan.obj) + ??_C@_0L@GICFCFGJ@OSMesa?4dll@ ; glfw3.lib(osmesa_context.obj) + ??_C@_0BO@NDHCIMGN@WGL?3?5Platform?5not?5initialized@ ; glfw3.lib(wgl_context.obj) + __imp_SetClipboardData ; user32.lib(USER32.dll) + ??_C@_01FJMABOPO@x@ ; glfw3.lib(input.obj) + DragQueryPoint ; shell32.lib(SHELL32.dll) + __xmm@80808080808080808080808080808080 ; dllmain.obj + _glfw_min ; glfw3.lib(init.obj) + ??_C@_0BA@PLHGLONG@IDAT?5size?5limit@ ; stb_image.obj + _glfwUpdateKeyNamesWin32 ; glfw3.lib(win32_init.obj) + ??_C@_0CD@FOMFMBIL@WGL_EXT_create_context_es2_prof@ ; glfw3.lib(wgl_context.obj) + ??_C@_0O@MKGNGALN@invalid?5width@ ; stb_image.obj + glfwRestoreWindow ; glfw3.lib(window.obj) + ??_C@_0BCN@BNINGACN@030000006f0e0000140200000000000@ ; glfw3.lib(input.obj) + ??_C@_0BO@JCPCDDEA@Invalid?5cursor?5position?5?$CFf?5?$CFf@ ; glfw3.lib(input.obj) + ??_C@_01IIACKFLH@q@ ; glfw3.lib(null_window.obj) + _glfwSetWindowIconWin32 ; glfw3.lib(win32_window.obj) + glfwGetInstanceProcAddress ; glfw3.lib(vulkan.obj) + ??_C@_0MA@ECCMLEBD@03000000bd12000015d000000000000@ ; glfw3.lib(input.obj) + _glfwSetVideoModeWin32 ; glfw3.lib(win32_monitor.obj) + ??_C@_0BDB@JPJOJNNC@0300000032150000001100000000000@ ; glfw3.lib(input.obj) + __scrt_stub_for_acrt_uninitialize ; MSVCRT.lib(ucrt_stubs.obj) + ??_C@_0BCJ@BOGEPGKL@0300000032150000020400000000000@ ; glfw3.lib(input.obj) + __imp_GetDeviceGammaRamp ; gdi32.lib(GDI32.dll) + __imp_WaitMessage ; user32.lib(USER32.dll) + ??_C@_0NA@FFFKKMHD@030000001008000001e100000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCG@OOIEPIIL@030000000d0f00006b0000000000000@ ; glfw3.lib(input.obj) + ??_C@_0CD@CBFNHKPK@78696e707574?$CF02x000000000000000@ ; glfw3.lib(win32_joystick.obj) + ??_C@_0CE@KNFDBMCE@Invalid?5image?5dimensions?5for?5cu@ ; glfw3.lib(input.obj) + _glfwSetWindowPosWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0NN@GDFALEBB@03000000bd12000013d000000000000@ ; glfw3.lib(input.obj) + glfwSetGammaRamp ; glfw3.lib(monitor.obj) + ??_C@_0BN@DHKEBMCG@Invalid?5OpenGL?5version?5?$CFi?4?$CFi@ ; glfw3.lib(context.obj) + ClipCursor ; user32.lib(USER32.dll) + ??_C@_0BCG@MGNGMDPB@03000000c62400002b8900000000000@ ; glfw3.lib(input.obj) + ??_C@_0DA@LMPKCOPB@WGL?3?5Failed?5to?5retrieve?5pixel?5f@ ; glfw3.lib(wgl_context.obj) + ??_C@_0BA@GHGALGFD@xinput9_1_0?4dll@ ; glfw3.lib(win32_init.obj) + ??_C@_0M@DMDNBACF@bad?5png?5sig@ ; stb_image.obj + _glfwCreateUTF8FromWideStringWin32 ; glfw3.lib(win32_init.obj) + GetCurrentProcessId ; kernel32.lib(KERNEL32.dll) + _glfwCreateStandardCursorNull ; glfw3.lib(null_window.obj) + __xmm@01010000010100000101000001010000 ; dllmain.obj + ??_C@_01CBDEGOCN@j@ ; glfw3.lib(null_window.obj) + glfwGetCursorPos ; glfw3.lib(input.obj) + ??_C@_0BCP@HPMIMEAF@03000000a306000023f600000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBL@NMDIMCBK@03000000c0110000065500000000000@ ; glfw3.lib(input.obj) + _initterm_e ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ??_C@_0BAE@PFJOMAIP@03000000791d0000010300000000000@ ; glfw3.lib(input.obj) + ??_C@_0CE@MPCJCEEO@Invalid?5image?5count?5for?5window?5@ ; glfw3.lib(window.obj) + ??_C@_0BCD@KBOGKJIK@03000000d81d00000f0000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BK@PDCFBJPK@Invalid?5input?5mode?50x?$CF08X@ ; glfw3.lib(input.obj) + FreeLibrary ; kernel32.lib(KERNEL32.dll) + at_quick_exit ; MSVCRT.lib(utility.obj) + _glfwUpdateGamepadGUIDWin32 ; glfw3.lib(win32_joystick.obj) + ??_C@_01EKENIIDA@3@ ; glfw3.lib(null_window.obj) + ??_C@_0BA@LGGPEDOH@GetDpiForWindow@ ; glfw3.lib(win32_init.obj) + ??_C@_0BC@BNOBCLNJ@eglDestroyContext@ ; glfw3.lib(egl_context.obj) + ??_C@_0BG@PJBJDAGM@can?8t?5merge?5dc?5and?5ac@ ; stb_image.obj + ??_C@_05MKIKPCON@leftx@ ; glfw3.lib(input.obj) + ??_C@_0CE@JBLPENML@Invalid?5context?5creation?5API?50x@ ; glfw3.lib(context.obj) + ??_C@_0EH@BEBOCAGI@Cannot?5set?5swap?5interval?5withou@ ; glfw3.lib(context.obj) + ??_C@_0BL@OIILILNJ@Arguments?5are?5inconsistent@ ; glfw3.lib(egl_context.obj) + _glfwGetHMONITORContentScaleWin32 ; glfw3.lib(win32_monitor.obj) + memcpy ; vcruntime.lib(VCRUNTIME140.dll) + ??_C@_0CJ@NMCAPCBP@03000000?$CF02x?$CF02x0000?$CF02x?$CF02x000@ ; glfw3.lib(win32_joystick.obj) + ??_C@_0N@CLKIAFGP@righttrigger@ ; glfw3.lib(input.obj) + ??_C@_0BE@DAPHADHL@bad?5component?5count@ ; stb_image.obj + __xmm@f493f493f493f493f493f493f493f493 ; dllmain.obj + ??_C@_0LE@DMNOHJBL@03000000300f0000121000000000000@ ; glfw3.lib(input.obj) + __imp_SetWindowPos ; user32.lib(USER32.dll) + ??_C@_0BAF@EBPNLKIJ@0300000032150000000300000000000@ ; glfw3.lib(input.obj) + __imp_QueryPerformanceFrequency ; kernel32.lib(KERNEL32.dll) + ??_C@_0BP@JAOBDJGN@WGL_ARB_create_context_profile@ ; glfw3.lib(wgl_context.obj) + __imp_ClipCursor ; user32.lib(USER32.dll) + _crt_at_quick_exit ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + __xmm@0000201e0000201d0000202300002022 ; glfw3.lib(wgl_context.obj) + TlsSetValue ; kernel32.lib(KERNEL32.dll) + ??_C@_0O@GCGJMHDL@wglShareLists@ ; glfw3.lib(wgl_context.obj) + _glfwGetCursorPosNull ; glfw3.lib(null_window.obj) + ??_C@_0BH@IPANDFMH@OSMesaCreateContextExt@ ; glfw3.lib(osmesa_context.obj) + glfwGetError ; glfw3.lib(init.obj) + __imp_TranslateMessage ; user32.lib(USER32.dll) + ??_C@_01LAKCGALK@9@ ; glfw3.lib(null_window.obj) + ??_C@_0BBM@FNOHJIMD@030000000d0f0000c10000000000000@ ; glfw3.lib(input.obj) + __stdio_common_vsscanf ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + __imp_InitializeSListHead ; kernel32.lib(KERNEL32.dll) + ??_C@_0BE@FABDLJKH@XInput?5Arcade?5Stick@ ; glfw3.lib(win32_joystick.obj) + ??_C@_0DF@KADNFCFI@Vulkan?3?5Failed?5to?5query?5instanc@ ; glfw3.lib(vulkan.obj) + __castguard_check_failure_user_handled_fptr ; MSVCRT.lib(guard_support.obj) + _glfwGetWindowPosNull ; glfw3.lib(null_window.obj) + _glfwCreateWindowSurfaceWin32 ; glfw3.lib(win32_window.obj) + _glfw_strdup ; glfw3.lib(init.obj) + ??_C@_0BCE@PHFLGEEP@03000000d81d0000100000000000000@ ; glfw3.lib(input.obj) + glfwSetWindowContentScaleCallback ; glfw3.lib(window.obj) + __imp_DescribePixelFormat ; gdi32.lib(GDI32.dll) + ??_C@_0BBN@DDIMFOMP@0300000020380000090000000000000@ ; glfw3.lib(input.obj) + _glfwPlatformInitTimer ; glfw3.lib(win32_time.obj) + ??_C@_1BK@OPNBOCAD@?$AAG?$AAL?$AAF?$AAW?$AA3?$AA?5?$AAH?$AAe?$AAl?$AAp?$AAe?$AAr@ ; glfw3.lib(win32_init.obj) + ??_C@_0BC@BHMPBBMG@not?5enough?5pixels@ ; stb_image.obj + ??_C@_0BDM@IEGKPAEF@03000000222c0000022300000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBD@FGLPEKLC@0300000038070000803400000000000@ ; glfw3.lib(input.obj) + ??_C@_0FM@BBONGFMN@The?5requested?5version?5of?5Vulkan@ ; glfw3.lib(vulkan.obj) + _glfwSetGammaRampNull ; glfw3.lib(null_monitor.obj) + glfwGetMonitorUserPointer ; glfw3.lib(monitor.obj) + __xmm@00000200000002000000020000000200 ; dllmain.obj + __castguard_slow_path_check_fastfail ; MSVCRT.lib(guard_support.obj) + ??_C@_0JL@IDKPNGMK@03000000c82d0000189000000000000@ ; glfw3.lib(input.obj) + _seh_filter_dll ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ??_C@_0PH@HDPKEOEB@0300000026090000888800000000000@ ; glfw3.lib(input.obj) + ??_C@_0BK@MLLMMLGE@OSMesa?3?5Library?5not?5found@ ; glfw3.lib(osmesa_context.obj) + glfwSetWindowShouldClose ; glfw3.lib(window.obj) + ??_C@_0DL@GNLICFMC@The?5application?5must?5destroy?5al@ ; glfw3.lib(egl_context.obj) + _glfwDetectJoystickDisconnectionWin32 ; glfw3.lib(win32_joystick.obj) + _glfwSetGammaRampWin32 ; glfw3.lib(win32_monitor.obj) + _glfwSetWindowAspectRatioWin32 ; glfw3.lib(win32_window.obj) + SetPixelFormat ; gdi32.lib(GDI32.dll) + __imp_ClientToScreen ; user32.lib(USER32.dll) + ??_C@_0BP@OHFKOFFD@Win32?3?5Failed?5to?5create?5cursor@ ; glfw3.lib(win32_window.obj) + ??_C@_0BN@GDKHKIAN@wglGetPixelFormatAttribivARB@ ; glfw3.lib(wgl_context.obj) + _glfwConnectWin32 ; glfw3.lib(win32_init.obj) + ??_C@_0BF@BPPLLLDH@OSMesaGetDepthBuffer@ ; glfw3.lib(osmesa_context.obj) + ??_C@_05MPLLHCJG@bad?5V@ ; stb_image.obj + glfwGetJoystickUserPointer ; glfw3.lib(input.obj) + _glfwShowWindowNull ; glfw3.lib(null_window.obj) + _glfwWindowHoveredWin32 ; glfw3.lib(win32_window.obj) + _glfwAllocMonitor ; glfw3.lib(monitor.obj) + ??_C@_0O@HFAAEHFL@libGLESv2?4dll@ ; glfw3.lib(egl_context.obj) + ??_C@_0CM@GKIHKJDL@A?5return?5array?5was?5too?5small?5fo@ ; glfw3.lib(vulkan.obj) + ??_C@_0BP@KPGBLOB@Win32?3?5Unknown?5standard?5cursor@ ; glfw3.lib(win32_window.obj) + _glfwSplitBPP ; glfw3.lib(monitor.obj) + ??_C@_0O@NIPGCINC@Unknown?5error@ ; glfw3.lib(win32_monitor.obj) + fseek ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + _glfwInputDrop ; glfw3.lib(input.obj) + GetActiveWindow ; user32.lib(USER32.dll) + OffsetRect ; user32.lib(USER32.dll) + glfwGetCurrentContext ; glfw3.lib(context.obj) + ??_C@_0BBN@OLDKGLCG@03000000300f0000110100000000000@ ; glfw3.lib(input.obj) + ??_C@_0OH@FOPKIOOK@030000000d0f0000880000000000000@ ; glfw3.lib(input.obj) + glfwGetVideoModes ; glfw3.lib(monitor.obj) + _glfwInputError ; glfw3.lib(init.obj) + _glfwAllocGammaArrays ; glfw3.lib(monitor.obj) + ??_C@_0BCD@DJDMNCGP@0300000088880000080300000000000@ ; glfw3.lib(input.obj) + ??_C@_0M@LPHNODCG@bad?5DRI?5len@ ; stb_image.obj + __real@43e0000000000000 ; glfw3.lib(input.obj) + ??_C@_0BCH@DHEFONIG@0300000038070000665200000000000@ ; glfw3.lib(input.obj) + _glfwRestoreWindowWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0BH@PHEJANJA@Invalid?5joystick?5ID?5?$CFi@ ; glfw3.lib(input.obj) + __scrt_stub_for_is_c_termination_complete ; MSVCRT.lib(ucrt_stubs.obj) + _get_startup_argv_mode ; MSVCRT.lib(argv_mode.obj) + ??_C@_0BH@FDAKHMHL@VK_KHR_wayland_surface@ ; glfw3.lib(vulkan.obj) + ??_C@_0CE@MEIEKJIC@Win32?3?5Failed?5to?5allocate?5TLS?5i@ ; glfw3.lib(win32_thread.obj) + ??_C@_0CG@JJEBGGIE@Win32?3?5Failed?5to?5set?5device?5axi@ ; glfw3.lib(win32_joystick.obj) + _glfwPlatformDestroyMutex ; glfw3.lib(win32_thread.obj) + __imp_RtlVirtualUnwind ; kernel32.lib(KERNEL32.dll) + __xmm@00ff00ff00ff00ff00ff00ff00ff00ff ; dllmain.obj + PtInRect ; user32.lib(USER32.dll) + _glfwInputWindowSize ; glfw3.lib(window.obj) + __scrt_initialize_winrt ; MSVCRT.lib(utility_desktop.obj) + AdjustWindowRectEx ; user32.lib(USER32.dll) + ??_C@_0BDE@MNGLEAIF@0300000038070000848300000000000@ ; glfw3.lib(input.obj) + __imp_GetRawInputDeviceInfoA ; user32.lib(USER32.dll) + ??_C@_0BBJ@OPMOLAIB@030000009d0d0000133000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBI@EPDBKPKA@0300000080830000030000000000000@ ; glfw3.lib(input.obj) + __xmm@166f166f166f166f166f166f166f166f ; dllmain.obj + _glfwSetCursorNull ; glfw3.lib(null_window.obj) + ??_C@_07LDLFNPGN@Windows@ ; glfw3.lib(win32_joystick.obj) + __imp_free ; ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) + ??_C@_05BLPKENEJ@bad?5H@ ; stb_image.obj + GetDC ; user32.lib(USER32.dll) + ??_C@_0P@DEBOOHKH@eglSwapBuffers@ ; glfw3.lib(egl_context.obj) + ??_C@_0CE@FEGPCKPN@WGL?3?5Failed?5to?5make?5context?5cur@ ; glfw3.lib(wgl_context.obj) + ??_C@_07CKIELOEH@no?5PLTE@ ; stb_image.obj + _glfwGetMonitorContentScaleNull ; glfw3.lib(null_monitor.obj) + __imp_GetDC ; user32.lib(USER32.dll) + SetClipboardData ; user32.lib(USER32.dll) + __imp_ungetc ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ??_C@_0CO@CNHHHABN@Win32?3?5Failed?5to?5register?5helpe@ ; glfw3.lib(win32_init.obj) + ??_C@_0BN@HJHDCKKP@Win32?3?5Failed?5to?5create?5icon@ ; glfw3.lib(win32_window.obj) + ??_C@_0BBM@ENBFFJGN@03000000f0250000c28300000000000@ ; glfw3.lib(input.obj) + CreateBitmap ; gdi32.lib(GDI32.dll) + __raise_securityfailure ; MSVCRT.lib(gs_report.obj) + ??_C@_0BBJ@HBGMHFLL@0300000010080000030000000000000@ ; glfw3.lib(input.obj) + SetPropW ; user32.lib(USER32.dll) + ??_C@_0CC@MGDCJJKB@Win32?3?5Failed?5to?5create?5interfa@ ; glfw3.lib(win32_joystick.obj) + __xmm@80000000000000008000000000000000 ; glfw3.lib(win32_window.obj) + _glfwFreeMonitorWin32 ; glfw3.lib(win32_monitor.obj) + ??_C@_0BCB@CIAKNBHG@030000008305000031b000000000000@ ; glfw3.lib(input.obj) + ??_C@_0JL@GGABLAON@03000000a30c0000270000000000000@ ; glfw3.lib(input.obj) + fopen_s ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ??_C@_0OB@DNKPJMLF@0300000038100000121400000000000@ ; glfw3.lib(input.obj) + glfwSetWindowTitle ; glfw3.lib(window.obj) + MoveWindow ; user32.lib(USER32.dll) + _glfwCreateWideStringFromUTF8Win32 ; glfw3.lib(win32_init.obj) + ??_C@_0BE@OHIPHHMJ@GL_ARB_debug_output@ ; glfw3.lib(context.obj) + ??_C@_0DJ@KAONABFK@A?5wait?5operation?5has?5not?5comple@ ; glfw3.lib(vulkan.obj) + ??_C@_0EF@PCMNMHKP@The?5requested?5feature?5has?5not?5y@ ; glfw3.lib(init.obj) + ??_C@_0BEF@OFEGMHGG@030000006f0e0000800100000000000@ ; glfw3.lib(input.obj) + ??_C@_0BDG@HFKCDPDO@030000004f0400000ed000000000000@ ; glfw3.lib(input.obj) + glfwGetMouseButton ; glfw3.lib(input.obj) + __imp_IsProcessorFeaturePresent ; kernel32.lib(KERNEL32.dll) + ??_C@_0CJ@NBJEEEJD@EGL?3?5Failed?5to?5clear?5current?5co@ ; glfw3.lib(egl_context.obj) + __imp_GlobalLock ; kernel32.lib(KERNEL32.dll) + EnumDisplaySettingsW ; user32.lib(USER32.dll) + ??_C@_01DHDKHMHF@6@ ; glfw3.lib(null_window.obj) + ??_C@_06LDHPELJC@dpdown@ ; glfw3.lib(input.obj) + __imp_UnhandledExceptionFilter ; kernel32.lib(KERNEL32.dll) + ??_C@_0BCC@ICCBFEBO@030000000d0f0000ee0000000000000@ ; glfw3.lib(input.obj) + _glfwGetFramebufferSizeNull ; glfw3.lib(null_window.obj) + __xmm@e09ee565e09ee565e09ee565e09ee565 ; dllmain.obj + _RTC_Initialize ; MSVCRT.lib(initsect.obj) + ??_C@_0N@IECDHMDI@zlib?5corrupt@ ; stb_image.obj + ??_C@_0L@NCPEAJBD@?$CD?$DPRADIANCE@ ; stb_image.obj + ??_C@_0BM@OCGPLDNC@ChangeWindowMessageFilterEx@ ; glfw3.lib(win32_init.obj) + ??_C@_0BCG@DHLFHLM@03000000c82d0000026000000000000@ ; glfw3.lib(input.obj) + EnumDisplayDevicesW ; user32.lib(USER32.dll) + RegisterClassExW ; user32.lib(USER32.dll) + __imp_GetCurrentThreadId ; kernel32.lib(KERNEL32.dll) + DragFinish ; shell32.lib(SHELL32.dll) + ??_C@_0CM@IALNOPFK@Win32?3?5Failed?5to?5retrieve?5own?5m@ ; glfw3.lib(win32_init.obj) + ??_C@_0BBJ@PKNJJDLA@0300000025090000888800000000000@ ; glfw3.lib(input.obj) + ??_C@_0LO@EDCIDLIK@0300000079000000110000000000000@ ; glfw3.lib(input.obj) + __real@408f400000000000 ; glfw3.lib(win32_window.obj) + ??_C@_0OD@GOLNACF@030000000d0f0000270000000000000@ ; glfw3.lib(input.obj) + __imp_GetMonitorInfoW ; user32.lib(USER32.dll) + glfwGetWindowOpacity ; glfw3.lib(window.obj) + ??_C@_0BBL@EFBOJJAL@0300000066f70000050000000000000@ ; glfw3.lib(input.obj) + ??_C@_1BE@LDFMCOHA@?$AAG?$AAL?$AAF?$AAW?$AA_?$AAI?$AAC?$AAO?$AAN@ ; glfw3.lib(win32_window.obj) + _glfw_free ; glfw3.lib(init.obj) + ??_C@_0OM@HGBIMFGF@03000000300f0000161100000000000@ ; glfw3.lib(input.obj) + ??_C@_0L@DMAPJJO@bad?5format@ ; stb_image.obj + __guard_xfg_dispatch_icall_fptr ; MSVCRT.lib(guard_support.obj) + ??_C@_0PC@EBDFKGFN@0300000079000000441800000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCL@PCNFJELE@030000006e0500000a2000000000000@ ; glfw3.lib(input.obj) + QueryPerformanceCounter ; kernel32.lib(KERNEL32.dll) + _glfwGetWindowSizeNull ; glfw3.lib(null_window.obj) + ??_C@_0BCJ@NOGEFCJN@0300000032150000010400000000000@ ; glfw3.lib(input.obj) + glfwGetKey ; glfw3.lib(input.obj) + ??_C@_01KGKMHCOC@e@ ; glfw3.lib(null_window.obj) + ??_C@_0KI@EPMKBGDM@0300000000f00000f10000000000000@ ; glfw3.lib(input.obj) + ??_C@_0CA@KCGCFCEG@Invalid?5window?5attribute?50x?$CF08X@ ; glfw3.lib(window.obj) + ??_C@_0BCG@NCIHPENA@03000000c62400001b8900000000000@ ; glfw3.lib(input.obj) + malloc ; ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) + SetUnhandledExceptionFilter ; kernel32.lib(KERNEL32.dll) + DispatchMessageW ; user32.lib(USER32.dll) + GetKeyState ; user32.lib(USER32.dll) + FormatMessageW ; kernel32.lib(KERNEL32.dll) + ??_C@_0BBP@NMPDIJKG@78696e7075740800000000000000000@ ; glfw3.lib(input.obj) + GetRawInputDeviceInfoA ; user32.lib(USER32.dll) + ??_C@_0KL@BLLPLAOA@0300000079000000241800000000000@ ; glfw3.lib(input.obj) + ??_C@_0BD@KGLHBPN@WGL_EXT_colorspace@ ; glfw3.lib(wgl_context.obj) + ??_C@_02PCIJFNDE@?$AN?6@ ; glfw3.lib(input.obj) + ??_C@_0BCG@LIMAPBKF@03000000a30600000b0400000001000@ ; glfw3.lib(input.obj) + ?configure_argv@__scrt_narrow_argv_policy@@SAHXZ ; MSVCRT.lib(utility.obj) + ??_C@_0BA@EPLGABLH@Xbox?5Controller@ ; glfw3.lib(win32_joystick.obj) + __imp_TlsAlloc ; kernel32.lib(KERNEL32.dll) + ??_C@_0M@ILLOCNCO@bad?5palette@ ; stb_image.obj + glfwTerminate ; glfw3.lib(init.obj) + SetCursorPos ; user32.lib(USER32.dll) + ??_C@_0BB@FOKGPEKG@bad?5code?5lengths@ ; stb_image.obj + glfwGetInputMode ; glfw3.lib(input.obj) + ??_C@_0LI@CLAPJPEB@03000000c82d0000015100000000000@ ; glfw3.lib(input.obj) + _glfwSetWindowPosNull ; glfw3.lib(null_window.obj) + __imp_GetWindowPlacement ; user32.lib(USER32.dll) + _RTC_Terminate ; MSVCRT.lib(initsect.obj) + ??_C@_0BCA@MGCGIKLM@030000006b140000020300000000000@ ; glfw3.lib(input.obj) + __imp_SetThreadExecutionState ; kernel32.lib(KERNEL32.dll) + ??_C@_0BA@KLNDOKJD@expected?5marker@ ; stb_image.obj + __real@41cb3333 ; glfw3.lib(win32_monitor.obj) + glfwGetKeyName ; glfw3.lib(input.obj) + strtol ; ucrt.lib(api-ms-win-crt-convert-l1-1-0.dll) + ??_C@_0CO@KALOHMEN@WGL?3?5Unknown?5pixel?5format?5attri@ ; glfw3.lib(wgl_context.obj) + ??_C@_0CL@LJNEEKEI@Win32?3?5Failed?5to?5create?5Vulkan?5@ ; glfw3.lib(win32_window.obj) + EmptyClipboard ; user32.lib(USER32.dll) + glfwRequestWindowAttention ; glfw3.lib(window.obj) + ??_C@_0JK@EKFMIBLA@03000000c82d000021ab00000000000@ ; glfw3.lib(input.obj) + glfwGetGammaRamp ; glfw3.lib(monitor.obj) + __scrt_set_unhandled_exception_filter ; MSVCRT.lib(utility_desktop.obj) + ??_C@_0CL@JHIPHFAC@Win32?3?5Failed?5to?5query?5device?5c@ ; glfw3.lib(win32_joystick.obj) + _glfwWaitEventsTimeoutNull ; glfw3.lib(null_window.obj) + ??_C@_07IMHMNOIB@BMP?5RLE@ ; stb_image.obj + ??_C@_0DB@JJADGKIE@Raw?5mouse?5motion?5is?5not?5support@ ; glfw3.lib(input.obj) + qsort ; ucrt.lib(api-ms-win-crt-utility-l1-1-0.dll) + ??_C@_09OJDLMMBJ@too?5large@ ; stb_image.obj + ??_C@_07NCIOKENI@not?5HDR@ ; stb_image.obj + ??_C@_0CB@BIHPPBFK@03000000?$CF?44s0000?$CF?44s00000000000@ ; glfw3.lib(win32_joystick.obj) + ??_C@_0BCF@KHBKMEME@03000000c82d0000016100000000000@ ; glfw3.lib(input.obj) + glfwSetWindowIconifyCallback ; glfw3.lib(window.obj) + SetWindowPos ; user32.lib(USER32.dll) + ??_C@_0L@ELKKGGMD@libEGL?4dll@ ; glfw3.lib(egl_context.obj) + __current_exception_context ; vcruntime.lib(VCRUNTIME140.dll) + ??_C@_0CN@FGAGPCCP@Win32?3?5Failed?5to?5convert?5clipbo@ ; glfw3.lib(win32_window.obj) + ??_C@_0BBP@LNLJDDIF@030000004f04000003d000000000000@ ; glfw3.lib(input.obj) + _register_onexit_function ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + _execute_onexit_table ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ??_C@_0BBK@DBILHFPC@030000005509000000b400000000000@ ; glfw3.lib(input.obj) + ??_C@_07FLLKAONK@dpright@ ; glfw3.lib(input.obj) + __xmm@00002018000020170000201600002015 ; glfw3.lib(wgl_context.obj) + __imp_DragQueryPoint ; shell32.lib(SHELL32.dll) + ??_C@_0OC@FELEMKIB@03000000120c0000f60e00000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBK@FBBILDLI@0300000038070000853200000000000@ ; glfw3.lib(input.obj) + ??_C@_0BF@OOKNCFMF@OSMesaDestroyContext@ ; glfw3.lib(osmesa_context.obj) + ??_C@_0BDF@FFJELFPB@030000006b140000020d00000000000@ ; glfw3.lib(input.obj) + _glfwWaitEventsTimeoutWin32 ; glfw3.lib(win32_window.obj) + glfwPostEmptyEvent ; glfw3.lib(window.obj) + __scrt_stub_for_acrt_thread_attach ; MSVCRT.lib(ucrt_stubs.obj) + UnregisterClassW ; user32.lib(USER32.dll) + ??_C@_0BBF@DJBNPOOL@0300000066660000670600000000000@ ; glfw3.lib(input.obj) + glfwGetOSMesaColorBuffer ; glfw3.lib(osmesa_context.obj) + __imp_MonitorFromWindow ; user32.lib(USER32.dll) + glfwDestroyWindow ; glfw3.lib(window.obj) + ??_C@_07IBAPPAHJ@glClear@ ; glfw3.lib(context.obj) + ??_C@_0FB@EPGEGHDL@An?5EGLSurface?5argument?5does?5not@ ; glfw3.lib(egl_context.obj) + _glfwDetectJoystickConnectionWin32 ; glfw3.lib(win32_joystick.obj) + ??_C@_0BF@DMNOCJMB@VK_EXT_metal_surface@ ; glfw3.lib(vulkan.obj) + ??_C@_06CLMBLEP@no?5SOI@ ; stb_image.obj + ??_C@_0CI@JNBCHAIF@WGL?3?5Failed?5to?5create?5OpenGL?5ES@ ; glfw3.lib(wgl_context.obj) + ??_C@_0JF@MFNKBEDG@03000000c82d0000095100000000000@ ; glfw3.lib(input.obj) + _glfwGetMonitorPosWin32 ; glfw3.lib(win32_monitor.obj) + ??_C@_0M@HOIDFNFN@?$CD?$DPRADIANCE?6@ ; stb_image.obj + ??_C@_0NN@EKBBEDOM@03000000c82d0000065000000000000@ ; glfw3.lib(input.obj) + MonitorFromWindow ; user32.lib(USER32.dll) + ??_C@_0BM@OMEGJAIK@ERROR?3?5UNKNOWN?5VULKAN?5ERROR@ ; glfw3.lib(vulkan.obj) + ??_C@_0OI@FJCLICAJ@03000000b5070000140300000000000@ ; glfw3.lib(input.obj) + ??_C@_0CE@OJFJMLEI@The?5specified?5window?5has?5no?5con@ ; glfw3.lib(init.obj) + __guard_check_icall_fptr ; MSVCRT.lib(guard_support.obj) + ??_C@_09MBBNGCKB@bad?5ctype@ ; stb_image.obj + _glfwSetWindowFloatingWin32 ; glfw3.lib(win32_window.obj) + _glfwInputWindowFocus ; glfw3.lib(window.obj) + GetSystemTimeAsFileTime ; kernel32.lib(KERNEL32.dll) + ??_C@_0PI@OKGGAFMJ@03000000341a0000010400000000000@ ; glfw3.lib(input.obj) + MultiByteToWideChar ; kernel32.lib(KERNEL32.dll) + ??_C@_0BD@CBEDEJPH@unknown?5image?5type@ ; stb_image.obj + ??_C@_0LC@FKHGODJA@03000000c82d0000129000000000000@ ; glfw3.lib(input.obj) + ??_C@_0CN@IHJGMBHI@The?5logical?5or?5physical?5device?5@ ; glfw3.lib(vulkan.obj) + ??_C@_0BCD@KNBJHBAH@030000005e0400000a0b00000000000@ ; glfw3.lib(input.obj) + _glfwRestoreWindowNull ; glfw3.lib(null_window.obj) + ??_C@_0JL@MEEFIFEH@03000000a30c0000280000000000000@ ; glfw3.lib(input.obj) + TranslateMessage ; user32.lib(USER32.dll) + ??_C@_0BF@HHLAJKBF@OSMesaGetColorBuffer@ ; glfw3.lib(osmesa_context.obj) + __imp__configure_narrow_argv ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + _glfwGetVulkanResultString ; glfw3.lib(vulkan.obj) + ??_C@_0BCP@ONIMJMJ@0300000066660000048800000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCE@HLGICLNK@030000008f0e00000d3100000000000@ ; glfw3.lib(input.obj) + SetCapture ; user32.lib(USER32.dll) + glfwSetWindowSize ; glfw3.lib(window.obj) + _glfwInputMonitorWindow ; glfw3.lib(monitor.obj) + ??_C@_0DF@FEPNJFGL@Vulkan?3?5Loader?5does?5not?5export?5@ ; glfw3.lib(vulkan.obj) + ??_C@_0BBH@LCHOLIJA@030000000d0f00005e0000000000000@ ; glfw3.lib(input.obj) + glfwSetFramebufferSizeCallback ; glfw3.lib(window.obj) + ??_C@_01FMEDJKGI@o@ ; glfw3.lib(null_window.obj) + ??_C@_0KB@CIFFNJNE@0300000000f00000030000000000000@ ; glfw3.lib(input.obj) + glfwInitVulkanLoader ; glfw3.lib(init.obj) + glfwPlatformSupported ; glfw3.lib(platform.obj) + __imp_GetProcAddress ; kernel32.lib(KERNEL32.dll) + ??_C@_0O@DHHDCCLF@glGetIntegerv@ ; glfw3.lib(context.obj) + _glfwInputMouseClick ; glfw3.lib(input.obj) + sscanf ; glfw3.lib(context.obj) + ??_C@_06FHABPINC@rightx@ ; glfw3.lib(input.obj) + ??_C@_0LK@DEPDOLNO@0300000028040000014000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BC@ICHKG@eglDestroySurface@ ; glfw3.lib(egl_context.obj) + ??_C@_0BCD@JLFNAMGI@030000006b140000030300000000000@ ; glfw3.lib(input.obj) + ??_C@_0BAE@KADGKHDN@030000000d0f0000700000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BDB@KNKJIBDH@030000006f0e0000320100000000000@ ; glfw3.lib(input.obj) + _glfwInputWindowDamage ; glfw3.lib(window.obj) + ??_C@_0CE@OJEBIEPE@OSMesa?3?5OpenGL?5profiles?5unavail@ ; glfw3.lib(osmesa_context.obj) + glfwSetCharCallback ; glfw3.lib(input.obj) + __imp_MsgWaitForMultipleObjects ; user32.lib(USER32.dll) + _glfwGetWindowPosWin32 ; glfw3.lib(win32_window.obj) + __imp_WideCharToMultiByte ; kernel32.lib(KERNEL32.dll) + ??_C@_0DF@NPMNAJFG@WGL?3?5Driver?5does?5not?5support?5Op@ ; glfw3.lib(wgl_context.obj) + ??_C@_0N@IGFNFAOP@eglTerminate@ ; glfw3.lib(egl_context.obj) + __imp_GetCurrentProcessId ; kernel32.lib(KERNEL32.dll) + _glfwPlatformDestroyTls ; glfw3.lib(win32_thread.obj) + ??_C@_0EN@CIIGDABJ@EGL?3?5The?5context?5must?5be?5curren@ ; glfw3.lib(egl_context.obj) + ReleaseCapture ; user32.lib(USER32.dll) + ??_C@_0BE@NAMJKDNF@missing?5color?5table@ ; stb_image.obj + ??_C@_0BBJ@FKANGOML@0300000025090000050000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBN@HKPLBABN@78696e7075740600000000000000000@ ; glfw3.lib(input.obj) + __scrt_is_managed_app ; MSVCRT.lib(utility_desktop.obj) + glfwDefaultWindowHints ; glfw3.lib(window.obj) + __castguard_set_user_handler ; MSVCRT.lib(guard_support.obj) + feof ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ??_C@_0BCB@OOEANFEH@03000000300f0000100100000000000@ ; glfw3.lib(input.obj) + ??_C@_0CF@KMMHNOMI@Extension?5string?5retrieval?5is?5b@ ; glfw3.lib(context.obj) + ??_C@_0BCL@EMNJKCNM@030000004f04000023b300000000000@ ; glfw3.lib(input.obj) + ??_C@_08FOJKHHJA@?$CFd?4?$CFd?4?$CFd@ ; glfw3.lib(context.obj) + ??_C@_1CI@MPNNJFCJ@?$AAG?$AAL?$AAF?$AAW?$AA?5?$AAm?$AAe?$AAs?$AAs?$AAa?$AAg?$AAe?$AA?5?$AAw?$AAi@ ; glfw3.lib(win32_init.obj) + __real@3ff0000000000000 ; dllmain.obj + __security_init_cookie ; MSVCRT.lib(gs_support.obj) + ??_C@_0BBH@LKFOHLNE@030000000d0f00005f0000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBJ@CMBLEBDK@03000000242f00008a0000000000000@ ; glfw3.lib(input.obj) + ??_C@_0NO@NNNFDMKP@030000006d0400001ac200000000000@ ; glfw3.lib(input.obj) + __castguard_slow_path_check_os_handled ; MSVCRT.lib(guard_support.obj) + __imp_PeekMessageW ; user32.lib(USER32.dll) + __guard_dispatch_icall_fptr ; MSVCRT.lib(guard_support.obj) + _glfw_fminf ; glfw3.lib(init.obj) + ??_C@_0BM@KPJJBADD@Graphics?5mode?5not?5supported@ ; glfw3.lib(win32_monitor.obj) + _glfwGetVideoModeNull ; glfw3.lib(null_monitor.obj) + ??_C@_0BEP@LJAOBMNM@030000006f0e0000840100000000000@ ; glfw3.lib(input.obj) + __imp_SetCursorPos ; user32.lib(USER32.dll) + __imp_SetPixelFormat ; gdi32.lib(GDI32.dll) + ??_C@_0CM@DGJKGOGD@WGL?3?5Failed?5to?5find?5a?5suitable?5@ ; glfw3.lib(wgl_context.obj) + __scrt_stub_for_acrt_initialize ; MSVCRT.lib(ucrt_stubs.obj) + glfwGetJoystickName ; glfw3.lib(input.obj) + ??_C@_0BBD@HKHEBCPH@030000006e050000052000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BJ@KEAIGPHD@eglGetPlatformDisplayEXT@ ; glfw3.lib(egl_context.obj) + ??_C@_0CD@IGHBCNOG@Win32?3?5Failed?5to?5query?5monitor?5@ ; glfw3.lib(win32_monitor.obj) + WideCharToMultiByte ; kernel32.lib(KERNEL32.dll) + __imp_DeleteDC ; gdi32.lib(GDI32.dll) + _glfwSetWindowMonitorNull ; glfw3.lib(null_window.obj) + ??_C@_0BCB@EPBJCJPK@030000000d050000030800000000000@ ; glfw3.lib(input.obj) + glfwGetJoystickAxes ; glfw3.lib(input.obj) + ??_C@_0BJ@ODLLHDDH@WGL_EXT_framebuffer_sRGB@ ; glfw3.lib(wgl_context.obj) + ??_C@_0FA@OHOPKHFK@WGL?3?5OpenGL?5profile?5requested?5b@ ; glfw3.lib(wgl_context.obj) + GetPropW ; user32.lib(USER32.dll) + glfwSetWindowCloseCallback ; glfw3.lib(window.obj) + __scrt_get_dyn_tls_init_callback ; MSVCRT.lib(dyn_tls_init.obj) + ?__scrt_uninitialize_type_info@@YAXXZ ; MSVCRT.lib(tncleanup.obj) + ??_C@_0BD@DKPJMBMG@VK_KHR_xcb_surface@ ; glfw3.lib(vulkan.obj) + ??_C@_0N@KDLCCKCH@bad?5tRNS?5len@ ; stb_image.obj + __CastGuardVftablesStart ; MSVCRT.lib(guard_support.obj) + __report_rangecheckfailure ; MSVCRT.lib(gs_report.obj) + ??_C@_0CH@PNNMGINB@Invalid?5context?5robustness?5mode@ ; glfw3.lib(context.obj) + ??_C@_06IFCEAHIA@no?5SOF@ ; stb_image.obj + ??_C@_0BO@LHMLBOLK@SetProcessDpiAwarenessContext@ ; glfw3.lib(win32_init.obj) + ??_C@_0BBN@FMDJFAID@0300000002200000009000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BE@HBNNGLHP@XInput?5Flight?5Stick@ ; glfw3.lib(win32_joystick.obj) + _glfwGetWindowContentScaleNull ; glfw3.lib(null_window.obj) + ChoosePixelFormat ; gdi32.lib(GDI32.dll) + _glfwSetWindowOpacityNull ; glfw3.lib(null_window.obj) + __xmm@eb1a08a9eb1a08a9eb1a08a9eb1a08a9 ; dllmain.obj + ??_C@_07MLPECBNA@no?5IDAT@ ; stb_image.obj + UnregisterDeviceNotification ; user32.lib(USER32.dll) + ??_C@_0BBF@GOLEDGAH@030000006d04000011c200000000000@ ; glfw3.lib(input.obj) + ??_C@_0OJ@NCDOGEIN@030000000d0f0000920000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCM@OALNNLEB@030000005e0400008e0200000000000@ ; glfw3.lib(input.obj) + ??_C@_0CI@KAHNKLLC@One?5or?5more?5argument?5values?5are@ ; glfw3.lib(egl_context.obj) + __imp_strspn ; ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + _guard_rf_checks_enforced ; MSVCRT.lib(guard_support.obj) + ??_C@_0BC@GHLIKKMD@bad?5filter?5method@ ; stb_image.obj + ??_C@_0BC@HONLJDPH@eglGetProcAddress@ ; glfw3.lib(egl_context.obj) + ??_C@_0CE@HKNBGEPI@A?5host?5memory?5allocation?5has?5fa@ ; glfw3.lib(vulkan.obj) + ??_C@_0P@HJKEKLKD@eglQueryString@ ; glfw3.lib(egl_context.obj) + ??_C@_0BCP@NIMGPLGA@0300000038070000638200000000000@ ; glfw3.lib(input.obj) + __xmm@0000202400002021000020200000201f ; glfw3.lib(wgl_context.obj) + ??_C@_0BDG@FAKOKHMO@030000004f04000000b300000000000@ ; glfw3.lib(input.obj) + __isa_available_default ; dllmain.obj + ??_C@_0BK@KJGCMOHN@Invalid?5window?5size?5?$CFix?$CFi@ ; glfw3.lib(window.obj) + __scrt_dllmain_uninitialize_critical ; MSVCRT.lib(utility.obj) + ??_C@_0ED@GAJEHCGA@An?5EGLContext?5argument?5does?5not@ ; glfw3.lib(egl_context.obj) + ??_C@_0BBC@LOLNAEDE@03000000ac0500002c0200000000000@ ; glfw3.lib(input.obj) + ??_C@_01OHGJGJJP@?$FL@ ; glfw3.lib(null_window.obj) + ??_C@_0BBL@BABJOOFG@03000000ffff0000000000000000000@ ; glfw3.lib(input.obj) + __imp_SetForegroundWindow ; user32.lib(USER32.dll) + __imp_pow ; ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) + ??_C@_0BDN@CCAJAJCK@0300000079000000001800000000000@ ; glfw3.lib(input.obj) + glfwGetTimerFrequency ; glfw3.lib(input.obj) + __xmm@ffffffffffffffffffffffffffffffff ; MSVCRT.lib(utility.obj) + RtlCaptureContext ; kernel32.lib(KERNEL32.dll) + _glfwGetEGLNativeDisplayNull ; glfw3.lib(null_window.obj) + memset ; vcruntime.lib(VCRUNTIME140.dll) + ??_C@_0BJ@IIGAEGGE@Wireless?5Xbox?5Controller@ ; glfw3.lib(win32_joystick.obj) + ??_C@_0BCP@EHCNAHCG@03000000d62000009f3100000000000@ ; glfw3.lib(input.obj) + __real@42ff0000 ; glfw3.lib(win32_joystick.obj) + ??_C@_0BBF@CLNKBPGE@030000008f0e0000120000000000000@ ; glfw3.lib(input.obj) + ??_C@_0JO@HBLEAOAI@03000000c0110000135200000000000@ ; glfw3.lib(input.obj) + ??_C@_0CA@CJLAIOKE@WGL_ARB_create_context_no_error@ ; glfw3.lib(wgl_context.obj) + glfwGetWindowFrameSize ; glfw3.lib(window.obj) + __scrt_dllmain_crt_thread_attach ; MSVCRT.lib(utility.obj) + ??_C@_0NO@KCLNENJG@03000000c82d0000303200000000000@ ; glfw3.lib(input.obj) + ??_C@_0CJ@FFMMFAIL@Invalid?5image?5dimensions?5for?5wi@ ; glfw3.lib(window.obj) + glfwSetMonitorUserPointer ; glfw3.lib(monitor.obj) + __CastGuardVftablesEnd ; MSVCRT.lib(guard_support.obj) + __imp_QueryPerformanceCounter ; kernel32.lib(KERNEL32.dll) + GetClassLongPtrW ; user32.lib(USER32.dll) + _glfwPollJoystickWin32 ; glfw3.lib(win32_joystick.obj) + __imp__register_onexit_function ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + glfwFocusWindow ; glfw3.lib(window.obj) + _glfwIconifyWindowWin32 ; glfw3.lib(win32_window.obj) + _glfwGetWindowContentScaleWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0OO@GFAPAFAG@0300000011010000191400000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBO@IBHMMFFH@030000008f0e0000080000000000000@ ; glfw3.lib(input.obj) + ??_C@_0KC@KGMCONBG@03000000c82d0000302800000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCB@MKBJECLN@030000000d0f00009c0000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCC@CBIJNOOO@03000000a306000020f600000000000@ ; glfw3.lib(input.obj) + ??_C@_0BA@LCMKGGHA@XInput?5Drum?5Kit@ ; glfw3.lib(win32_joystick.obj) + glfwGetMonitorName ; glfw3.lib(monitor.obj) + ??_C@_0BCD@KBJOCLC@03000000c82d0000036000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCH@GKMNBEOK@03000000c0110000035500001101000@ ; glfw3.lib(input.obj) + ??_C@_04ELNJHLFH@PICT@ ; stb_image.obj + ??_C@_0BF@JCGDPBAA@bad?5interlace?5method@ ; stb_image.obj + ??_C@_01DICPFPGM@k@ ; glfw3.lib(null_window.obj) + ??_C@_0BCA@IDEGIHPL@030000006d04000018c200000000000@ ; glfw3.lib(input.obj) + ??_C@_0CB@LDOHHBIH@OSMesa?3?5Failed?5to?5create?5contex@ ; glfw3.lib(osmesa_context.obj) + __real@bf800000 ; glfw3.lib(input.obj) + TlsFree ; kernel32.lib(KERNEL32.dll) + glfwGetOSMesaContext ; glfw3.lib(osmesa_context.obj) + ??_C@_0N@MEFCLEJO@leftshoulder@ ; glfw3.lib(input.obj) + __imp__initterm_e ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + _glfwGetWindowFrameSizeNull ; glfw3.lib(null_window.obj) + powf ; ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) + ??_C@_0N@IILPFLFM@vulkan?91?4dll@ ; glfw3.lib(vulkan.obj) + ??_C@_0BBB@PJOPHLEI@0300000036280000010000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BA@KMGHNAFM@Invalid?5time?5?$CFf@ ; glfw3.lib(window.obj) + fgetc ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ??_C@_0P@JEAFOMAF@first?5not?5IHDR@ ; stb_image.obj + _glfwInitGamepadMappings ; glfw3.lib(input.obj) + _glfwInputWindowCloseRequest ; glfw3.lib(window.obj) + ??_C@_0CA@HGIOILGO@EGL_ANGLE_platform_angle_vulkan@ ; glfw3.lib(egl_context.obj) + ??_C@_0BBD@LABNEKLL@0300000038070000188800000000000@ ; glfw3.lib(input.obj) + glfwCreateWindowSurface ; glfw3.lib(vulkan.obj) + __scrt_initialize_default_local_stdio_options ; MSVCRT.lib(default_local_stdio_options.obj) + ??_C@_0M@CICAFFCH@bad?5COM?5len@ ; stb_image.obj + __imp_GlobalUnlock ; kernel32.lib(KERNEL32.dll) + ??_C@_0MI@KAOJFFGI@030000007d040000054000000000000@ ; glfw3.lib(input.obj) + ??_C@_0DH@LCNJGHOP@05000000?$CF02x?$CF02x?$CF02x?$CF02x?$CF02x?$CF02@ ; glfw3.lib(win32_joystick.obj) + _glfwGetPhysicalDevicePresentationSupportNull ; glfw3.lib(null_window.obj) + ??_C@_0BJ@IHHANIOG@Allocation?5size?5overflow@ ; glfw3.lib(init.obj) + _glfwDestroyWindowWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0BG@HBCIDECD@vkGetInstanceProcAddr@ ; glfw3.lib(vulkan.obj) + ??_C@_0BK@JOBLJGNA@wglGetExtensionsStringARB@ ; glfw3.lib(wgl_context.obj) + glfwJoystickIsGamepad ; glfw3.lib(input.obj) + __imp_CreateRectRgn ; gdi32.lib(GDI32.dll) + _load_config_used ; MSVCRT.lib(loadcfg.obj) + __xmm@000000ff000000ff000000ff000000ff ; dllmain.obj + ??_C@_0BCN@IMCBAJO@030000006f0e0000026300000000000@ ; glfw3.lib(input.obj) + _glfwSetWindowTitleWin32 ; glfw3.lib(win32_window.obj) + __imp_GetDeviceCaps ; gdi32.lib(GDI32.dll) + __crt_debugger_hook ; MSVCRT.lib(utility_desktop.obj) + ??_C@_00CNPNBAHC@@ ; stb_image.obj + ??_C@_0BCG@EICBBMKF@03000000c82d0000159000000000000@ ; glfw3.lib(input.obj) + ??_C@_07KMJLPAII@not?5GIF@ ; stb_image.obj + _glfwPlatformCreateMutex ; glfw3.lib(win32_thread.obj) + RtlLookupFunctionEntry ; kernel32.lib(KERNEL32.dll) + ??_C@_0EI@PJFDHBJK@Cannot?5swap?5buffers?5of?5a?5window@ ; glfw3.lib(context.obj) + ??_C@_0LK@IEAMBPJF@03000000a0050000323200000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBI@BAKFEMPI@03000000a30600001af500000000000@ ; glfw3.lib(input.obj) + __imp_RegisterRawInputDevices ; user32.lib(USER32.dll) + ??_C@_0N@DJABBOOH@unknown?5code@ ; stb_image.obj + ??_C@_0DK@CDBDDLLM@WGL?3?5Driver?5does?5not?5support?5th@ ; glfw3.lib(wgl_context.obj) + ??_C@_0LN@ELDHBANA@0300000083050000602000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BH@BAPIEFAH@Invalid?5gamma?5value?5?$CFf@ ; glfw3.lib(monitor.obj) + ??_C@_0BCF@OCBMGCLB@030000004c050000680200000000000@ ; glfw3.lib(input.obj) + ??_C@_0L@DHLNGPDM@rightstick@ ; glfw3.lib(input.obj) + ??_C@_0BL@IDFNAMEG@Invalid?5window?5hint?50x?$CF08X@ ; glfw3.lib(window.obj) + ??_C@_01GLPGHMHM@z@ ; glfw3.lib(null_window.obj) + _glfwWindowMaximizedNull ; glfw3.lib(null_window.obj) + _glfwInitWGL ; glfw3.lib(wgl_context.obj) + __castguard_slow_path_check_debugbreak ; MSVCRT.lib(guard_support.obj) + __castguard_check_failure_nop ; MSVCRT.lib(guard_support.obj) + ??_C@_0M@OPOBFDCB@glGetString@ ; glfw3.lib(context.obj) + ??_C@_0BBB@MOEBBOIH@030000008305000009a000000000000@ ; glfw3.lib(input.obj) + TlsGetValue ; kernel32.lib(KERNEL32.dll) + LoadCursorW ; user32.lib(USER32.dll) + SystemParametersInfoW ; user32.lib(USER32.dll) + _glfwDestroyWindowNull ; glfw3.lib(null_window.obj) + _glfwTerminateNull ; glfw3.lib(null_init.obj) + __scrt_dllmain_after_initialize_c ; MSVCRT.lib(utility.obj) + ??_C@_0BAA@HNPCOCLG@030000000d0f0000110000000000000@ ; glfw3.lib(input.obj) + __xmm@00000002000000000000000400000000 ; dllmain.obj + ??_C@_0NF@EPHCAKNM@030000007d040000084000000000000@ ; glfw3.lib(input.obj) + ??_C@_0PI@JDIGFFDA@030000004b120000014d00000000000@ ; glfw3.lib(input.obj) + __xmm@80000000800000008000000080000000 ; dllmain.obj + _glfwSetWindowTitleNull ; glfw3.lib(null_window.obj) + ??_C@_0CH@NEGEBDM@A?5requested?5extension?5is?5not?5su@ ; glfw3.lib(vulkan.obj) + ??_C@_0BBJ@MEIBJIGF@0300000010080000010000000000000@ ; glfw3.lib(input.obj) + __imp_SetUnhandledExceptionFilter ; kernel32.lib(KERNEL32.dll) + ??_C@_08PEMNBIMD@DwmFlush@ ; glfw3.lib(win32_init.obj) + strncmp ; ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + ??_C@_0DH@EKEHMEFD@Too?5many?5objects?5of?5the?5type?5ha@ ; glfw3.lib(vulkan.obj) + __scrt_release_startup_lock ; MSVCRT.lib(utility.obj) + ??_C@_01EFFIKLCJ@n@ ; glfw3.lib(null_window.obj) + __imp_IsIconic ; user32.lib(USER32.dll) + ??_C@_0BBL@JKCMMIPG@0300000038070000388800000000000@ ; glfw3.lib(input.obj) + __imp__cexit ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ??_C@_0BF@NPDKPIKE@WGL_EXT_swap_control@ ; glfw3.lib(wgl_context.obj) + __imp_CreateIconIndirect ; user32.lib(USER32.dll) + __std_type_info_destroy_list ; vcruntime.lib(VCRUNTIME140.dll) + glfwGetMonitors ; glfw3.lib(monitor.obj) + ??_C@_0OB@DOLNAILH@0300000026090000262500000000000@ ; glfw3.lib(input.obj) + _glfwGetRequiredInstanceExtensionsNull ; glfw3.lib(null_window.obj) + ??_C@_0ME@GIJLHGEN@030000007e050000062000000100000@ ; glfw3.lib(input.obj) + __imp_GetCursorPos ; user32.lib(USER32.dll) + __isa_available_init ; MSVCRT.lib(cpu_disp.obj) + __real@3fe0000000000000 ; glfw3.lib(input.obj) + _glfwGetEGLPlatformNull ; glfw3.lib(null_window.obj) + __scrt_fastfail ; MSVCRT.lib(utility_desktop.obj) + _glfwFocusWindowNull ; glfw3.lib(null_window.obj) + ??_C@_0BO@FABLLHKK@WGL_ARB_context_flush_control@ ; glfw3.lib(wgl_context.obj) + glfwHideWindow ; glfw3.lib(window.obj) + __imp_TlsGetValue ; kernel32.lib(KERNEL32.dll) + ??_C@_0EL@BBAGGFOK@An?5EGLConfig?5argument?5does?5not?5@ ; glfw3.lib(egl_context.obj) + ??_C@_0O@ENGHJHNB@OpenGL?5ES?9CM?5@ ; glfw3.lib(context.obj) + _glfwSetCursorModeWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0CB@EJFBPGFM@A?5surface?5is?5no?5longer?5availabl@ ; glfw3.lib(vulkan.obj) + __imp__initialize_narrow_environment ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ??_C@_0LL@KLNOPNHB@030000008f0e0000133000000000000@ ; glfw3.lib(input.obj) + ??_C@_0DD@JDDDNHLP@Null?3?5Gamma?5ramp?5size?5must?5matc@ ; glfw3.lib(null_monitor.obj) + __real@7f7fffff ; glfw3.lib(monitor.obj) + _glfwGetScancodeNameWin32 ; glfw3.lib(win32_window.obj) + _glfwGetFramebufferSizeWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0O@CNHKKDIM@bad?5DQT?5table@ ; stb_image.obj + ??_C@_0BAK@PBDFELHA@030000000d0f0000220000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BP@PHOHHIJJ@EGL?3?5Failed?5to?5bind?5OpenGL?3?5?$CFs@ ; glfw3.lib(egl_context.obj) + ??_C@_0CD@CODEPNKE@EGL?3?5Failed?5to?5get?5EGL?5display?3@ ; glfw3.lib(egl_context.obj) + ??_C@_01HHGOMJKL@l@ ; glfw3.lib(null_window.obj) + ??_C@_01MIFGBAGJ@?$CL@ ; glfw3.lib(null_window.obj) + ??_C@_0BB@KEKMNHDF@eglCreateContext@ ; glfw3.lib(egl_context.obj) + ??_C@_0BP@BFHGHOIO@Win32?3?5Failed?5to?5create?5window@ ; glfw3.lib(win32_window.obj) + strcspn ; ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + _glfwGetWindowSizeWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0BJ@PGPMJKGJ@Vulkan?3?5Loader?5not?5found@ ; glfw3.lib(vulkan.obj) + ??_C@_0PJ@FPHAKAJD@0300000079000000451800000000000@ ; glfw3.lib(input.obj) + _glfwCompareVideoModes ; glfw3.lib(monitor.obj) + ??_C@_0BM@PKHPFLOM@There?5is?5no?5current?5context@ ; glfw3.lib(init.obj) + ??_C@_0BBE@JFJIACOB@03000000ac0500004d0400000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCC@FJIJNHMA@03000000d62000006dca00000000000@ ; glfw3.lib(input.obj) + _glfwGetEGLPlatformWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0M@FLKHLCCP@lefttrigger@ ; glfw3.lib(input.obj) + ??_C@_0O@DJDONBGH@libOSMesa?4dll@ ; glfw3.lib(osmesa_context.obj) + ??_C@_0O@BMJFLKOA@eglGetDisplay@ ; glfw3.lib(egl_context.obj) + ??_C@_0P@IENCOMCD@VK_KHR_surface@ ; glfw3.lib(vulkan.obj) + _initterm ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + NtCurrentTeb ; MSVCRT.lib(utility.obj) + ??_C@_0BI@INMBJMIJ@vkCreateWin32SurfaceKHR@ ; glfw3.lib(win32_window.obj) + ??_C@_0BBP@ECGIDGCJ@03000000120c0000210e00000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBI@BKECFDAD@0300000079000000070000000000000@ ; glfw3.lib(input.obj) + __imp__initterm ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ??_C@_0OC@CPLNMNJF@030000004c050000da0c00000000000@ ; glfw3.lib(input.obj) + ??_C@_0BC@CLDFFND@GL_EXT_robustness@ ; glfw3.lib(context.obj) + ??_C@_0BCG@LJNCMOGI@03000000c62400002a8900000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCB@HKBKHEFP@0300000045130000083000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BK@PMMAHJAK@ERROR?3?5UNKNOWN?5GLFW?5ERROR@ ; glfw3.lib(init.obj) + ??_C@_0BCN@POFKMMNB@03000000d6200000955700000000000@ ; glfw3.lib(input.obj) + __imp_memcpy ; vcruntime.lib(VCRUNTIME140.dll) + _glfwWindowVisibleWin32 ; glfw3.lib(win32_window.obj) + __scrt_acquire_startup_lock ; MSVCRT.lib(utility.obj) + _glfwInputWindowMaximize ; glfw3.lib(window.obj) + __xmm@00002003000020130000200100002010 ; glfw3.lib(wgl_context.obj) + __imp_fread ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ??_C@_01FAMBOPH@4@ ; glfw3.lib(null_window.obj) + __xmm@e9cf12d0e9cf12d0e9cf12d0e9cf12d0 ; dllmain.obj + _glfwCenterCursorInContentArea ; glfw3.lib(input.obj) + _glfwFreeGammaArrays ; glfw3.lib(monitor.obj) + _glfwStringInExtensionString ; glfw3.lib(context.obj) + ??_C@_0CH@MMCOKIKC@EGL?5cannot?5access?5a?5requested?5r@ ; glfw3.lib(egl_context.obj) + ??_C@_0BBK@NKANFPJB@0300000045750000040100000000000@ ; glfw3.lib(input.obj) + __imp_IsWindowVisible ; user32.lib(USER32.dll) + ??_C@_0DM@FCAOPKO@WGL?3?5Failed?5to?5enable?5sharing?5w@ ; glfw3.lib(wgl_context.obj) + ??_C@_0LF@DNFJHMLL@0300000000050000289b00000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCN@BCBEDKCA@030000006f0e0000190100000000000@ ; glfw3.lib(input.obj) + ??_C@_0M@KHBIBJBG@unknown?5BMP@ ; stb_image.obj + ??_C@_0BJ@HDECIKCI@Invalid?5init?5hint?50x?$CF08X@ ; glfw3.lib(init.obj) + glfwMakeContextCurrent ; glfw3.lib(context.obj) + _glfwSetWindowResizableWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0BE@EJHIPKNO@1?12?14?18?116?9bit?5only@ ; stb_image.obj + ??_C@_0N@BOFJCHAP@bad?5DQT?5type@ ; stb_image.obj + glfwSetTime ; glfw3.lib(input.obj) + ??_C@_01LKDEMHDF@s@ ; glfw3.lib(null_window.obj) + ??_C@_01KDCPPGHE@r@ ; glfw3.lib(null_window.obj) + ??_C@_0O@ONJGDDHG@xinput1_1?4dll@ ; glfw3.lib(win32_init.obj) + ??_C@_0L@HJOCIPHF@eglBindAPI@ ; glfw3.lib(egl_context.obj) + ??_C@_03HAFBONIK@IG_@ ; glfw3.lib(win32_joystick.obj) + ??_C@_0BCC@JCAIEANG@03000000a3060000210600000000000@ ; glfw3.lib(input.obj) + ??_C@_0BB@CEDNNLBG@tRNS?5before?5PLTE@ ; stb_image.obj + ??_C@_0BCN@NICPPBBL@0300000038070000625200000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBD@DCBELLKM@03000000bd12000003c000000000000@ ; glfw3.lib(input.obj) + _glfwGetKeyScancodeNull ; glfw3.lib(null_window.obj) + __real@405e000000000000 ; glfw3.lib(win32_window.obj) + GlobalLock ; kernel32.lib(KERNEL32.dll) + ??_C@_0BCC@FCCEALDM@03000000450c0000204300000000000@ ; glfw3.lib(input.obj) + glfwGetProcAddress ; glfw3.lib(context.obj) + ShowWindow ; user32.lib(USER32.dll) + ??_C@_0M@NOCCBFAC@bad?5DC?5huff@ ; stb_image.obj + ??_C@_0LC@FALCBLOD@03000000c82d0000622800000000000@ ; glfw3.lib(input.obj) + __imp_FormatMessageW ; kernel32.lib(KERNEL32.dll) + ??_C@_0CH@EMJGILEP@EGL?3?5Failed?5to?5find?5support?5for@ ; glfw3.lib(egl_context.obj) + ??_C@_0BF@NOEEEFMF@bad?5bits_per_channel@ ; stb_image.obj + _glfwInputCursorPos ; glfw3.lib(input.obj) + ??_C@_0BBC@LKELPOKL@03000000ef050000030000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BE@IBFIPFO@output?5buffer?5limit@ ; stb_image.obj + _glfwCreateWindowWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0MH@JBIEFOEI@03000000c82d0000031000000000000@ ; glfw3.lib(input.obj) + __imp_AdjustWindowRectEx ; user32.lib(USER32.dll) + glfwSwapInterval ; glfw3.lib(context.obj) + _glfwPlatformGetTls ; glfw3.lib(win32_thread.obj) + glfwGetKeyScancode ; glfw3.lib(input.obj) + __guard_xfg_check_icall_fptr ; MSVCRT.lib(guard_support.obj) + glfwSetWindowMaximizeCallback ; glfw3.lib(window.obj) + _glfwGetEGLNativeDisplayWin32 ; glfw3.lib(win32_window.obj) + ??_C@_01HIHLOKLC@1@ ; glfw3.lib(null_window.obj) + __imp_LeaveCriticalSection ; kernel32.lib(KERNEL32.dll) + glfwGetOSMesaDepthBuffer ; glfw3.lib(osmesa_context.obj) + ??_C@_0CC@NBPCCDGB@Invalid?5window?5hint?5string?50x?$CF0@ ; glfw3.lib(window.obj) + ??_C@_0CK@FKJPIIOF@Win32?3?5Failed?5to?5enumerate?5devi@ ; glfw3.lib(win32_joystick.obj) + ??_C@_0BBI@IMFOKND@03000000d9040000020000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BH@DGFLCCMF@SetProcessDpiAwareness@ ; glfw3.lib(win32_init.obj) + _glfwInitEGL ; glfw3.lib(egl_context.obj) + ??_C@_0BCB@PGBBGDNC@03000000c82d0000402800000000000@ ; glfw3.lib(input.obj) + ??_C@_0L@JDPIFELH@bad?5offset@ ; stb_image.obj + __imp_memmove ; vcruntime.lib(VCRUNTIME140.dll) + _glfwFocusWindowWin32 ; glfw3.lib(win32_window.obj) + DeleteDC ; gdi32.lib(GDI32.dll) + ??_C@_0BB@OGAIJNNO@wglDeleteContext@ ; glfw3.lib(wgl_context.obj) + __imp_MoveWindow ; user32.lib(USER32.dll) + __imp_ShowWindow ; user32.lib(USER32.dll) + ??_C@_0MI@LCKMPFJJ@03000000c82d0000510600000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCF@NLOPKJKL@03000000d62000002a7900000000000@ ; glfw3.lib(input.obj) + ??_C@_0BH@LOKBIIOJ@illegal?5code?5in?5raster@ ; stb_image.obj + ??_C@_0CI@HCGBBANC@The?5requested?5platform?5is?5not?5s@ ; glfw3.lib(platform.obj) + ??_C@_0BAK@EANFDDAF@030000009f000000adbb00000000000@ ; glfw3.lib(input.obj) + __imp_OpenClipboard ; user32.lib(USER32.dll) + ??_C@_0BP@EMCHFHHH@Invalid?5standard?5cursor?50x?$CF08X@ ; glfw3.lib(input.obj) + ??_C@_05HLIEEKJG@guide@ ; glfw3.lib(input.obj) + __real@3f000000 ; dllmain.obj + ??_C@_0BI@KJPLJBHH@DwmIsCompositionEnabled@ ; glfw3.lib(win32_init.obj) + glfwGetClipboardString ; glfw3.lib(input.obj) + ??_C@_0ON@KEJKIAHI@03000000222c0000002000000000000@ ; glfw3.lib(input.obj) + __imp_powf ; ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) + IsWindowVisible ; user32.lib(USER32.dll) + ??_C@_01KBJDNOO@i@ ; glfw3.lib(null_window.obj) + ??_C@_0CJ@JPDPLHCM@EGL?3?5Failed?5to?5find?5a?5suitable?5@ ; glfw3.lib(egl_context.obj) + ??_C@_0BCC@NMJPCJOC@03000000b8050000021000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCA@BCGGNNCE@03000000c82d000011ab00000000000@ ; glfw3.lib(input.obj) + _glfwHideWindowWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0BG@GOAKKGGB@EGL_KHR_gl_colorspace@ ; glfw3.lib(egl_context.obj) + _glfwSetWindowDecoratedWin32 ; glfw3.lib(win32_window.obj) + _glfwIsValidContextConfig ; glfw3.lib(context.obj) + ??_C@_0DO@OLPMIGEJ@The?5requested?5feature?5cannot?5be@ ; glfw3.lib(init.obj) + ??_C@_0HI@IJLNGEMH@0300000073070000040100000000000@ ; glfw3.lib(input.obj) + __castguard_check_failure_os_handled ; MSVCRT.lib(guard_support.obj) + _glfwSetWindowSizeNull ; glfw3.lib(null_window.obj) + _glfwEncodeUTF8 ; glfw3.lib(init.obj) + ??_C@_01IHBHIGKO@?0@ ; glfw3.lib(input.obj) + ??_C@_0ON@DOLMEDL@0300000079000000461800000000000@ ; glfw3.lib(input.obj) + __imp_SetWindowLongW ; user32.lib(USER32.dll) + ??_C@_0BBG@ODDFOEO@03000000ff110000413300000000000@ ; glfw3.lib(input.obj) + ??_C@_0CJ@JFEDIEDE@Win32?3?5Failed?5to?5remove?5raw?5inp@ ; glfw3.lib(win32_window.obj) + glfwSwapBuffers ; glfw3.lib(context.obj) + __imp_CreateBitmap ; gdi32.lib(GDI32.dll) + ??_C@_0PP@HNFBKAIN@030000006f0e0000070200000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBL@JOPBPDPP@03000000d620000011a700000000000@ ; glfw3.lib(input.obj) + ??_C@_0CE@PKGOIGHB@Win32?3?5Failed?5to?5create?5mask?5bi@ ; glfw3.lib(win32_window.obj) + CloseClipboard ; user32.lib(USER32.dll) + ??_C@_0BK@OEGBAIFC@Computer?5restart?5required@ ; glfw3.lib(win32_monitor.obj) + ??_C@_0JJ@DHPDMCKL@03000000c82d0000003000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BDA@ENLICDAF@030000006b140000130d00000000000@ ; glfw3.lib(input.obj) + glfwSetWindowAspectRatio ; glfw3.lib(window.obj) + ??_C@_0BCF@OOFHHKMG@03000000c82d0000006100000000000@ ; glfw3.lib(input.obj) + _glfwWindowMaximizedWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0BCJ@OFAKENFF@03000000242f00002d0000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BL@PDDHMPGF@wglCreateContextAttribsARB@ ; glfw3.lib(wgl_context.obj) + ??_C@_0EH@LGPPFAO@Cannot?5query?5entry?5point?5withou@ ; glfw3.lib(context.obj) + glfwGetFramebufferSize ; glfw3.lib(window.obj) + ??_C@_0BCB@KIGAAAPL@03000000f0250000c38300000000000@ ; glfw3.lib(input.obj) + glfwGetWindowPos ; glfw3.lib(window.obj) + __xmm@00080008000800080008000800080008 ; dllmain.obj + ??_C@_0CA@FNCFBEIG@Win32?3?5Failed?5to?5open?5clipboard@ ; glfw3.lib(win32_window.obj) + ??_C@_0BK@HGDBIG@wglGetExtensionsStringEXT@ ; glfw3.lib(wgl_context.obj) + ??_C@_0OA@BPMCGMAH@78696e7075740300000000000000000@ ; glfw3.lib(input.obj) + DefWindowProcW ; user32.lib(USER32.dll) + sprintf ; glfw3.lib(win32_joystick.obj) + UnhandledExceptionFilter ; kernel32.lib(KERNEL32.dll) + ??_C@_0DO@PGEACBCJ@Win32?3?5Vulkan?5instance?5missing?5@ ; glfw3.lib(win32_window.obj) + ??_C@_0BCE@CFNIKJCA@03000000c82d0000103800000000000@ ; glfw3.lib(input.obj) + __imp_strncpy ; ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + __imp_FlashWindow ; user32.lib(USER32.dll) + glfwGetGamepadState ; glfw3.lib(input.obj) + __imp_OffsetRect ; user32.lib(USER32.dll) + ??_C@_01PAPGNFGE@c@ ; glfw3.lib(null_window.obj) + ??_C@_0BA@BMKCDCKD@wglGetCurrentDC@ ; glfw3.lib(wgl_context.obj) + ??_C@_0CE@OHDHEPIL@Win32?3?5Failed?5to?5lock?5global?5ha@ ; glfw3.lib(win32_window.obj) + ??_C@_0BF@OGGDOHFN@WGL_ARB_pixel_format@ ; glfw3.lib(wgl_context.obj) + ??_C@_0BCA@PDBJCLJJ@030000006d04000019c200000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCJ@GDBCPJIF@030000000d0f0000840000000000000@ ; glfw3.lib(input.obj) + _glfwInputJoystickButton ; glfw3.lib(input.obj) + glfwSetCursorPosCallback ; glfw3.lib(input.obj) + ??_C@_0BCC@CJMNKOGI@03000000e3050000960500000000000@ ; glfw3.lib(input.obj) + ??_C@_0O@MGDACKOJ@no?5clear?5code@ ; stb_image.obj + ??_C@_0ME@PNFMJONN@030000007e050000062000000000000@ ; glfw3.lib(input.obj) + _glfwChooseVideoMode ; glfw3.lib(monitor.obj) + __imp_SetDeviceGammaRamp ; gdi32.lib(GDI32.dll) + ??_C@_0BD@NKJFFLKL@unsupported?5format@ ; stb_image.obj + ??_C@_01COCBENDE@7@ ; glfw3.lib(null_window.obj) + ??_C@_0BG@DGJLFNBN@Unknown?5XInput?5Device@ ; glfw3.lib(win32_joystick.obj) + glfwInit ; glfw3.lib(init.obj) + ??_C@_0BD@IINOPBDD@wglSwapIntervalEXT@ ; glfw3.lib(wgl_context.obj) + glfwSetWindowIcon ; glfw3.lib(window.obj) + infolog + pow ; ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) + ??_C@_0CF@OGLFKBHA@WGL?3?5Failed?5to?5describe?5pixel?5f@ ; glfw3.lib(wgl_context.obj) + ??_C@_0JC@NGKIIHPA@03000000921200004b4600000000000@ ; glfw3.lib(input.obj) + TrackMouseEvent ; user32.lib(USER32.dll) + ??_C@_0FO@KAELFDNN@Vulkan?3?5Window?5surface?5creation@ ; glfw3.lib(vulkan.obj) + GetModuleHandleW ; kernel32.lib(KERNEL32.dll) + __imp_GetPropW ; user32.lib(USER32.dll) + ??_C@_07JNJHIMGH@bad?5bpp@ ; stb_image.obj + ??_C@_0BDH@LGMFPGNL@030000005e040000ea0200000000000@ ; glfw3.lib(input.obj) + ??_C@_0CN@JHECHMPF@OSMesa?3?5OpenGL?5ES?5is?5not?5availa@ ; glfw3.lib(osmesa_context.obj) + ??_C@_0O@OMNEJBKO@eglGetConfigs@ ; glfw3.lib(egl_context.obj) + _glfwGetMappingNameNull ; glfw3.lib(null_joystick.obj) + ??_C@_0M@DOFMJEMP@bad?5SOF?5len@ ; stb_image.obj + ??_C@_0P@PNCLKCLJ@bad?5DNL?5height@ ; stb_image.obj + __imp__initialize_onexit_table ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + _glfwGetEGLNativeWindowNull ; glfw3.lib(null_window.obj) + glfwGetVideoMode ; glfw3.lib(monitor.obj) + ??_C@_0BCH@BOPAENED@030000006e050000032000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BDA@LBDFNLMA@03000000c0110000014000000000000@ ; glfw3.lib(input.obj) + glfwSetKeyCallback ; glfw3.lib(input.obj) + ??_C@_0BCC@BGKKLNHG@030000005f140000c50100000000000@ ; glfw3.lib(input.obj) + __imp_EnumDisplaySettingsExW ; user32.lib(USER32.dll) + _glfwGetWindowOpacityNull ; glfw3.lib(null_window.obj) + _glfwRawMouseMotionSupportedWin32 ; glfw3.lib(win32_window.obj) + __imp_strcmp ; ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + ??_C@_0OJ@KFMPHKBC@0300000010000000820000000000000@ ; glfw3.lib(input.obj) + ??_C@_0O@IFDGNEHH@XInput?5Guitar@ ; glfw3.lib(win32_joystick.obj) + _glfwInputJoystickHat ; glfw3.lib(input.obj) + __imp_feof ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + EnumDisplayMonitors ; user32.lib(USER32.dll) + ??_C@_0DC@HFHALHIB@WGL?3?5The?5driver?5does?5not?5appear@ ; glfw3.lib(wgl_context.obj) + ??_C@_07PBILKAFL@Success@ ; glfw3.lib(vulkan.obj) + ??_C@_0CC@GOIKODMM@EGL?3?5Failed?5to?5create?5context?3?5@ ; glfw3.lib(egl_context.obj) + ??_C@_0CN@GOPDCGGI@OpenGL?5ES?5version?5string?5retrie@ ; glfw3.lib(context.obj) + SendMessageW ; user32.lib(USER32.dll) + ??_C@_0BCG@JCENNNEN@0300000063250000230500000000000@ ; glfw3.lib(input.obj) + ??_C@_0PI@JHAKKPHF@030000008f0e0000103000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BJ@CIMJOHKL@WGL_ARB_framebuffer_sRGB@ ; glfw3.lib(wgl_context.obj) + ??_C@_0GC@KIFEGHB@03000000fa2d0000010000000000000@ ; glfw3.lib(input.obj) + _glfwSetCursorModeNull ; glfw3.lib(null_window.obj) + ??_C@_0BK@EIOPBJJH@Invalid?5client?5API?50x?$CF08X@ ; glfw3.lib(context.obj) + _glfwDestroyCursorWin32 ; glfw3.lib(win32_window.obj) + _glfwGetMonitorWorkareaWin32 ; glfw3.lib(win32_monitor.obj) + ??_C@_0BI@BFOJALMM@Invalid?5refresh?5rate?5?$CFi@ ; glfw3.lib(window.obj) + ??_C@_01OMGOGALD@u@ ; glfw3.lib(null_window.obj) + _glfwInitVulkan ; glfw3.lib(vulkan.obj) + __xmm@1c5a1c5a1c5a1c5a1c5a1c5a1c5a1c5a ; dllmain.obj + ??_C@_0BCO@ICLHBGLC@03000000d6200000600000000000000@ ; glfw3.lib(input.obj) + _glfwPlatformCreateTls ; glfw3.lib(win32_thread.obj) + _glfw_realloc ; glfw3.lib(init.obj) + ??_C@_0BCD@CGKCHHKM@78696e7075740400000000000000000@ ; glfw3.lib(input.obj) + __guard_memcpy_fptr ; vcruntime.lib(softmemtag.obj) + ??_C@_0P@GJNJCPDJ@too?5many?5codes@ ; stb_image.obj + ??_C@_0FN@NPOMMKHN@WGL?3?5A?5forward?5compatible?5OpenG@ ; glfw3.lib(wgl_context.obj) + _cexit ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + GetSystemMetrics ; user32.lib(USER32.dll) + ??_C@_0CC@NGDHIGBI@eglCreatePlatformWindowSurfaceE@ ; glfw3.lib(egl_context.obj) + ??_C@_0BCN@JADNPMFA@030000006f0e0000110100000000000@ ; glfw3.lib(input.obj) + __imp_DispatchMessageW ; user32.lib(USER32.dll) + ??_C@_0BP@NMKFFDCO@EGL_ANGLE_platform_angle_metal@ ; glfw3.lib(egl_context.obj) + glfwVulkanSupported ; glfw3.lib(vulkan.obj) + __imp__crt_atexit ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + _glfwCreateStandardCursorWin32 ; glfw3.lib(win32_window.obj) + glfwCreateWindow ; glfw3.lib(window.obj) + ??_C@_0BBE@BNPLHIOK@03000000ac0500003d0300000000000@ ; glfw3.lib(input.obj) + _glfwPostEmptyEventNull ; glfw3.lib(null_window.obj) + ??_C@_0BL@IKJGDNLO@Invalid?5cursor?5mode?50x?$CF08X@ ; glfw3.lib(input.obj) + ??_C@_0BDD@DODHFLKI@030000007e050000092000000000000@ ; glfw3.lib(input.obj) + ??_C@_0MJ@DMAMFLIE@030000001008000001e500000000000@ ; glfw3.lib(input.obj) + ??_C@_0PI@MHCFEKFM@03000000ff110000313300000000000@ ; glfw3.lib(input.obj) + ??_C@_0CH@GAPNPCHF@Win32?3?5Failed?5to?5register?5windo@ ; glfw3.lib(win32_window.obj) + ??_C@_0BBC@NNMIKKEI@03000000341a0000090800000000000@ ; glfw3.lib(input.obj) + _glfwInputFramebufferSize ; glfw3.lib(window.obj) + ??_C@_0EE@NKCAIGPH@A?5NativePixmapType?5argument?5doe@ ; glfw3.lib(egl_context.obj) + ??_C@_0BB@MAMHPNNC@GetDpiForMonitor@ ; glfw3.lib(win32_init.obj) + __imp_SendMessageW ; user32.lib(USER32.dll) + glfwWaitEventsTimeout ; glfw3.lib(window.obj) + glfwMaximizeWindow ; glfw3.lib(window.obj) + glfwSetCharModsCallback ; glfw3.lib(input.obj) + SetForegroundWindow ; user32.lib(USER32.dll) + __real@42c00000 ; glfw3.lib(win32_monitor.obj) + ??_C@_09DAEBACAB@bad?5masks@ ; stb_image.obj + ??_C@_0BCD@PNMMMGBA@030000008f0e0000143100000000000@ ; glfw3.lib(input.obj) + ??_C@_01INIBCBCB@f@ ; glfw3.lib(null_window.obj) + ??_C@_0BCA@JHGJKADI@03000000f0250000c18300000000000@ ; glfw3.lib(input.obj) + __imp_ReleaseCapture ; user32.lib(USER32.dll) + ??_C@_0MP@NNGGKFCK@0300000025090000001700000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCE@CONCKJMB@03000000c82d0000019000000000000@ ; glfw3.lib(input.obj) + ??_C@_0P@MADFBLIB@libGLES_CM?4dll@ ; glfw3.lib(egl_context.obj) + __imp_GetLastError ; kernel32.lib(KERNEL32.dll) + glfwGetWindowUserPointer ; glfw3.lib(window.obj) + ??_C@_0CG@DAAALEIC@The?5requested?5platform?5is?5unava@ ; glfw3.lib(init.obj) + _glfwSelectPlatform ; glfw3.lib(platform.obj) + ??_C@_0BCN@IFHHFAPH@030000006f0e00001a0100000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCP@LIBLBNIN@03000000d6200000c75700000000000@ ; glfw3.lib(input.obj) + _glfwHideWindowNull ; glfw3.lib(null_window.obj) + ??_C@_0BDA@PPKEBMHL@030000006d040000d2ca00000000000@ ; glfw3.lib(input.obj) + __imp_DeleteObject ; gdi32.lib(GDI32.dll) + _glfwGetGammaRampNull ; glfw3.lib(null_monitor.obj) + ??_C@_06DJHOIPC@?$CFs?3?5?$CFs@ ; glfw3.lib(win32_init.obj) + strstr ; vcruntime.lib(VCRUNTIME140.dll) + __scrt_initialize_mta ; MSVCRT.lib(utility_desktop.obj) + GetClientRect ; user32.lib(USER32.dll) + ??_C@_0OH@IPHKKKC@03000000790000001b1800000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBJ@FKKMPNGK@03000000341a0000060800000000000@ ; glfw3.lib(input.obj) + _glfwMaximizeWindowWin32 ; glfw3.lib(win32_window.obj) + __imp_GetClientRect ; user32.lib(USER32.dll) + ??_C@_0BBD@GHNGPLFD@0300000038070000808400000000000@ ; glfw3.lib(input.obj) + ??_C@_0CL@GPJNIICL@Win32?3?5Failed?5to?5register?5raw?5i@ ; glfw3.lib(win32_window.obj) + __imp_CreateDCW ; gdi32.lib(GDI32.dll) + _glfwSetWindowMonitorWin32 ; glfw3.lib(win32_window.obj) + _glfwSetWindowSizeLimitsWin32 ; glfw3.lib(win32_window.obj) + BringWindowToTop ; user32.lib(USER32.dll) + glfwGetMonitorPhysicalSize ; glfw3.lib(monitor.obj) + ??_C@_0P@FCCEJHCC@XInputGetState@ ; glfw3.lib(win32_init.obj) + __imp_TlsFree ; kernel32.lib(KERNEL32.dll) + glfwSetWindowPosCallback ; glfw3.lib(window.obj) + ??_C@_0BBF@IGGJOAJN@03000000341a0000020800000000000@ ; glfw3.lib(input.obj) + ??_C@_0L@JLFHOCGA@OpenGL?5ES?5@ ; glfw3.lib(context.obj) + ??_C@_01ICJEACDI@?$DL@ ; glfw3.lib(null_window.obj) + ??_C@_0P@BBBFNDGG@wglMakeCurrent@ ; glfw3.lib(wgl_context.obj) + ??_C@_0FN@PJBCJBIL@The?5requested?5window?5is?5already@ ; glfw3.lib(vulkan.obj) + IsZoomed ; user32.lib(USER32.dll) + ??_C@_0BH@GIBFIFPN@EGL_KHR_create_context@ ; glfw3.lib(egl_context.obj) + _glfwTerminateWin32 ; glfw3.lib(win32_init.obj) + ??_C@_0BCA@NJAENDKN@03000000341a0000230800000000000@ ; glfw3.lib(input.obj) + ??_C@_0BB@LNEGOMA@no?5header?5height@ ; stb_image.obj + CreateRectRgn ; gdi32.lib(GDI32.dll) + _glfwGetPhysicalDevicePresentationSupportWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0BO@IDEEMGNC@EGL_KHR_context_flush_control@ ; glfw3.lib(egl_context.obj) + ??_C@_0BP@OHJGLFIP@Win32?3?5Failed?5to?5create?5device@ ; glfw3.lib(win32_joystick.obj) + ??_C@_0BE@EFOBHOAB@VK_KHR_xlib_surface@ ; glfw3.lib(vulkan.obj) + __scrt_dllmain_exception_filter ; MSVCRT.lib(utility.obj) + ??_C@_0CF@EKIADPFB@WGL?3?5Failed?5to?5clear?5current?5co@ ; glfw3.lib(wgl_context.obj) + _glfwInputChar ; glfw3.lib(input.obj) + ??_C@_0BBG@IEDKEHBE@03000000790000000a0000000000000@ ; glfw3.lib(input.obj) + _glfwGetGammaRampWin32 ; glfw3.lib(win32_monitor.obj) + ??_C@_0BCK@MNABGIK@030000006b140000010300000000000@ ; glfw3.lib(input.obj) + ??_C@_19JBPKICJI@?$AAG?$AAL?$AAF?$AAW@ ; glfw3.lib(win32_window.obj) + __imp_GetWindowLongW ; user32.lib(USER32.dll) + ??_C@_0BH@PDIOJKKP@EGL?3?5API?5not?5available@ ; glfw3.lib(egl_context.obj) + glfwUpdateGamepadMappings ; glfw3.lib(input.obj) + _glfwInitWin32 ; glfw3.lib(win32_init.obj) + ??_C@_03LPIGJBNC@lib@ ; glfw3.lib(egl_context.obj) + ??_C@_06EBHLNDKL@dpleft@ ; glfw3.lib(input.obj) + ??_C@_01EANLCPLP@y@ ; glfw3.lib(input.obj) + __imp_ferror ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + __imp_GetLayeredWindowAttributes ; user32.lib(USER32.dll) + _glfwIconifyWindowNull ; glfw3.lib(null_window.obj) + ??_C@_0BDB@PPKHIPGK@0300000038070000813400000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCB@GBOFCHI@03000000a30600000c0400000000000@ ; glfw3.lib(input.obj) + ??_C@_0KC@BDMHLJAH@0300000010280000090000000000000@ ; glfw3.lib(input.obj) + ??_C@_0N@DOKAJOHF@opengl32?4dll@ ; glfw3.lib(wgl_context.obj) + ??_C@_0BCG@JIGLIOKN@03000000d1180000009400000000000@ ; glfw3.lib(input.obj) + _glfwTerminateWGL ; glfw3.lib(wgl_context.obj) + _configure_narrow_argv ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + __imp_ScreenToClient ; user32.lib(USER32.dll) + __imp_fopen_s ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ??_C@_0DC@KKLJAJOK@OSMesa?3?5Forward?9compatible?5cont@ ; glfw3.lib(osmesa_context.obj) + ??_C@_0BG@IPJFJLIC@EGL_EXT_platform_base@ ; glfw3.lib(egl_context.obj) + __imp_GetClassLongPtrW ; user32.lib(USER32.dll) + __scrt_initialize_crt ; MSVCRT.lib(utility.obj) + ??_C@_0BC@DBAKKFEN@Invalid?5parameter@ ; glfw3.lib(win32_monitor.obj) + __imp_EnumDisplayDevicesW ; user32.lib(USER32.dll) + ??_C@_0CI@MMBFOOEA@Win32?3?5Failed?5to?5set?5device?5dat@ ; glfw3.lib(win32_joystick.obj) + glfwSetWindowOpacity ; glfw3.lib(window.obj) + glfwGetMonitorContentScale ; glfw3.lib(monitor.obj) + __xmm@11c8f9c311c8f9c311c8f9c311c8f9c3 ; dllmain.obj + __imp_GetMessageTime ; user32.lib(USER32.dll) + __imp_fseek ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + glfwGetWin32Monitor ; glfw3.lib(win32_monitor.obj) + ??_C@_01KJLJFBPL@8@ ; glfw3.lib(null_window.obj) + ??_C@_0O@EEJFKEKH@eglInitialize@ ; glfw3.lib(egl_context.obj) + _glfwInputWindowMonitor ; glfw3.lib(window.obj) + glfwGetEGLContext ; glfw3.lib(egl_context.obj) + glfwSetScrollCallback ; glfw3.lib(input.obj) + ??_C@_0BCD@BABDCDPH@030000004c050000cc0900000000000@ ; glfw3.lib(input.obj) + ??_C@_01GOHFPIOK@m@ ; glfw3.lib(null_window.obj) + GlobalAlloc ; kernel32.lib(KERNEL32.dll) + ??_C@_0BCB@FAGFKFBC@03000000c82d0000013000000000000@ ; glfw3.lib(input.obj) + __castguard_check_failure_fastfail ; MSVCRT.lib(guard_support.obj) + OpenClipboard ; user32.lib(USER32.dll) + __imp_GetModuleHandleW ; kernel32.lib(KERNEL32.dll) + ??_C@_0IN@KIPMJDI@03000000c82d0000045100000000000@ ; glfw3.lib(input.obj) + _glfwGetMonitorPosNull ; glfw3.lib(null_monitor.obj) + ??_C@_0BDE@NDAIINLM@0300000038070000843300000000000@ ; glfw3.lib(input.obj) + ??_C@_0BB@JDDMDGFO@XInput?5Dance?5Pad@ ; glfw3.lib(win32_joystick.obj) + ??_C@_0BBG@IKJMKIKH@03000000790000001c1800000000000@ ; glfw3.lib(input.obj) + _glfwInputWindowIconify ; glfw3.lib(window.obj) + glfwDestroyCursor ; glfw3.lib(input.obj) + glfwGetWindowContentScale ; glfw3.lib(window.obj) + ??_C@_0BCO@NNBOKIIL@030000006f0e00001e0100000000000@ ; glfw3.lib(input.obj) + ??_C@_0DI@GNLCAHHB@A?5requested?5layer?5is?5not?5presen@ ; glfw3.lib(vulkan.obj) + ??_C@_0L@BCINMEBJ@only?58?9bit@ ; stb_image.obj + ??_C@_0CJ@EFIFNOJC@Win32?3?5Failed?5to?5convert?5string@ ; glfw3.lib(win32_init.obj) + ??_C@_0N@POJLKMKK@bad?5IHDR?5len@ ; stb_image.obj + __imp_GlobalFree ; kernel32.lib(KERNEL32.dll) + __real@7fefffffffffffff ; glfw3.lib(window.obj) + ??_C@_0N@ODCBCBFN@BMP?5JPEG?1PNG@ ; stb_image.obj + ??_C@_05FAGFPHJG@start@ ; glfw3.lib(input.obj) + ??_C@_0BCH@HONEFEFO@030000000d0f00005c0000000000000@ ; glfw3.lib(input.obj) + _glfwCreateWindowSurfaceNull ; glfw3.lib(null_window.obj) + __scrt_get_show_window_mode ; MSVCRT.lib(utility_desktop.obj) + memmove ; vcruntime.lib(VCRUNTIME140.dll) + __imp_strstr ; vcruntime.lib(VCRUNTIME140.dll) + __scrt_dllmain_crt_thread_detach ; MSVCRT.lib(utility.obj) + __imp_EnumDisplaySettingsW ; user32.lib(USER32.dll) + ??_C@_0BN@OHLJPDPM@EGL_ANGLE_platform_angle_d3d@ ; glfw3.lib(egl_context.obj) + _initialize_onexit_table ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ??_C@_07BIDACDEF@0?5width@ ; stb_image.obj + ??_C@_0BBL@HCLFABAI@03000000bc200000641200000000000@ ; glfw3.lib(input.obj) + ??_C@_0OM@PAPEIDEH@030000000d0f0000400000000000000@ ; glfw3.lib(input.obj) + glfwShowWindow ; glfw3.lib(window.obj) + __real@437f0000 ; dllmain.obj + ??_C@_0CE@KDBKFLEE@Invalid?5argument?5for?5enum?5param@ ; glfw3.lib(init.obj) + __imp_RegisterClassExW ; user32.lib(USER32.dll) + __xmm@00000008000000080000000800000008 ; glfw3.lib(window.obj) + ??_C@_0CB@DDANHPKI@can?8t?5fopen?0?5Unable?5to?5open?5fil@ ; stb_image.obj + __imp_GetCurrentProcess ; kernel32.lib(KERNEL32.dll) + ??_C@_0BJ@MBAAGFCG@AdjustWindowRectExForDpi@ ; glfw3.lib(win32_init.obj) + _CRT_INIT ; MSVCRT.lib(dll_dllmain.obj) + __imp_ChoosePixelFormat ; gdi32.lib(GDI32.dll) + glfwGetEGLDisplay ; glfw3.lib(egl_context.obj) + _glfwInitNull ; glfw3.lib(null_init.obj) + EnterCriticalSection ; kernel32.lib(KERNEL32.dll) + glfwSetWindowPos ; glfw3.lib(window.obj) + __real@477fff00 ; dllmain.obj + ??_C@_0BDN@OKDOLNP@03000000222c0000002300000000000@ ; glfw3.lib(input.obj) + DescribePixelFormat ; gdi32.lib(GDI32.dll) + ??_C@_0FH@MCDKNJAI@Initialization?5of?5an?5object?5cou@ ; glfw3.lib(vulkan.obj) + __report_securityfailureEx ; MSVCRT.lib(gs_report.obj) + ??_C@_0M@MHDBFHD@unsupported@ ; stb_image.obj + ?_OptionsStorage@?1??__local_stdio_printf_options@@9@4_KA ; MSVCRT.lib(default_local_stdio_options.obj) + _glfwRawMouseMotionSupportedNull ; glfw3.lib(null_window.obj) + __scrt_dllmain_uninitialize_c ; MSVCRT.lib(utility.obj) + ??_C@_09IFDKCGFO@bad?5delta@ ; stb_image.obj + ??_C@_0BCJ@JCLGLLDN@03000000d620000013a700000000000@ ; glfw3.lib(input.obj) + PeekMessageW ; user32.lib(USER32.dll) + ??_C@_0BBO@FCIHICKG@03000000b5070000120300000000000@ ; glfw3.lib(input.obj) + GetStartupInfoW ; kernel32.lib(KERNEL32.dll) + glfwSetWindowAttrib ; glfw3.lib(window.obj) + ??_C@_0CA@OJFEOPKP@EGL_KHR_create_context_no_error@ ; glfw3.lib(egl_context.obj) + _glfwConnectNull ; glfw3.lib(null_init.obj) + ??_C@_0BK@NKEDGNNN@EnableNonClientDpiScaling@ ; glfw3.lib(win32_init.obj) + __imp___current_exception ; vcruntime.lib(VCRUNTIME140.dll) + ??_C@_04EDFFKKLO@dpup@ ; glfw3.lib(input.obj) + _glfwGetScancodeNameNull ; glfw3.lib(null_window.obj) + ??_C@_0BM@KHOPPJNJ@EGL?3?5No?5EGLConfigs?5returned@ ; glfw3.lib(egl_context.obj) + __imp_DragQueryFileW ; shell32.lib(SHELL32.dll) + TerminateProcess ; kernel32.lib(KERNEL32.dll) + ??_C@_0BE@PJBNGDBE@wrong?5channel?5count@ ; stb_image.obj + ??_C@_0BCG@NPOEDNBE@030000000d0f00008a0000000000000@ ; glfw3.lib(input.obj) + ??_C@_0CN@FALFGDO@No?5version?5found?5in?5OpenGL?5ES?5v@ ; glfw3.lib(context.obj) + ??_C@_0O@CHBCDKKC@wrong?5version@ ; stb_image.obj + strcmp ; ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + ??_C@_01PFHFFBPC@t@ ; glfw3.lib(null_window.obj) + ??_C@_0BCB@JPNPNPJC@0300000079000000220100000000000@ ; glfw3.lib(input.obj) + 已完成对 /ORDER 选项的处理 + 已丢弃 "`string'" (??_C@_07CAIJGPF@file?3?1?1@)(从 glfw3.lib(init.obj) 中) + 已丢弃 "`string'" (??_C@_0CB@DDANHPKI@can?8t?5fopen?0?5Unable?5to?5open?5fil@)(从 stb_image.obj 中) + 已丢弃 __CastGuardVftablesStart(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __CastGuardVftablesEnd(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 $unwind$stbi__cpuid3(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__sse2_available(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__start_callbacks(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__start_file(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__fopen(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__get8(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__at_eof(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__build_fast_ac(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__jpeg_huff_decode(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__extend_receive(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__jpeg_get_bits(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__jpeg_get_bit(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__skip_jpeg_junk_at_end(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__jpeg_load(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__jpeg_test(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__zreceive(从 stb_image.obj 中) + 已丢弃 $chain$0$stbi__zreceive(从 stb_image.obj 中) + 已丢弃 $chain$1$stbi__zreceive(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__zhuffman_decode(从 stb_image.obj 中) + 已丢弃 $unwind$stbi_zlib_decode_malloc_guesssize_headerflag(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__get_chunk_header(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__paeth(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__expand_png_palette(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__de_iphone(从 stb_image.obj 中) + 已丢弃 $chain$0$stbi__de_iphone(从 stb_image.obj 中) + 已丢弃 $chain$1$stbi__de_iphone(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__do_png(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__png_load(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__png_test(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__bmp_test_raw(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__bmp_test(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__psd_test(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__pic_test_core(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__pic_test(从 stb_image.obj 中) + 已丢弃 $chain$2$stbi__pic_test(从 stb_image.obj 中) + 已丢弃 $chain$3$stbi__pic_test(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__gif_test(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__hdr_test_core(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__pnm_test(从 stb_image.obj 中) + 已丢弃 $unwind$_glfwParseUriList(从 glfw3.lib(init.obj) 中) + 已丢弃 $chain$1$_glfwParseUriList(从 glfw3.lib(init.obj) 中) + 已丢弃 $chain$2$_glfwParseUriList(从 glfw3.lib(init.obj) 中) + 已丢弃 $chain$3$_glfwParseUriList(从 glfw3.lib(init.obj) 中) + 已丢弃 $unwind$__report_securityfailure(从 MSVCRT.lib(gs_report.obj) 中) + 已丢弃 $unwind$__report_securityfailureEx(从 MSVCRT.lib(gs_report.obj) 中) + 已丢弃 $unwind$__report_rangecheckfailure(从 MSVCRT.lib(gs_report.obj) 中) + 已丢弃 $unwind$capture_current_context(从 MSVCRT.lib(gs_report.obj) 中) + 已丢弃 $unwind$__get_entropy(从 MSVCRT.lib(gs_support.obj) 中) + 已丢弃 $unwind$atexit(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 $unwind$_onexit(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 $unwind$?configure_argv@__scrt_narrow_argv_policy@@SAHXZ(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 $unwind$__scrt_get_show_window_mode(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 $unwind$__scrt_is_managed_app(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 $unwind$__scrt_unhandled_exception_filter(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 $unwind$__castguard_check_failure_os_handled_wrapper(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 $unwind$__castguard_check_failure_user_handled_wrapper(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 $unwind$__castguard_check_failure_os_handled(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 $unwind$__castguard_check_failure_user_handled(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 $unwind$__castguard_slow_path_check_os_handled(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 $unwind$__castguard_slow_path_check_user_handled(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 "unsigned __int64 `__local_stdio_printf_options'::`2'::_OptionsStorage" (?_OptionsStorage@?1??__local_stdio_printf_options@@9@4_KA)(从 MSVCRT.lib(default_local_stdio_options.obj) 中) + 已丢弃 "unsigned __int64 `__local_stdio_scanf_options'::`2'::_OptionsStorage" (?_OptionsStorage@?1??__local_stdio_scanf_options@@9@4_KA)(从 MSVCRT.lib(default_local_stdio_options.obj) 中) + 已丢弃 __castguard_check_failure_user_handled_fptr(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __isa_available_default(从 dllmain.obj 中) + 已丢弃 $pdata$_glfwParseUriList(从 glfw3.lib(init.obj) 中) + 已丢弃 $pdata$1$_glfwParseUriList(从 glfw3.lib(init.obj) 中) + 已丢弃 $pdata$2$_glfwParseUriList(从 glfw3.lib(init.obj) 中) + 已丢弃 $pdata$3$_glfwParseUriList(从 glfw3.lib(init.obj) 中) + 已丢弃 $pdata$__report_securityfailure(从 MSVCRT.lib(gs_report.obj) 中) + 已丢弃 $pdata$__report_securityfailureEx(从 MSVCRT.lib(gs_report.obj) 中) + 已丢弃 $pdata$__report_rangecheckfailure(从 MSVCRT.lib(gs_report.obj) 中) + 已丢弃 $pdata$capture_current_context(从 MSVCRT.lib(gs_report.obj) 中) + 已丢弃 $pdata$__get_entropy(从 MSVCRT.lib(gs_support.obj) 中) + 已丢弃 $pdata$atexit(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 $pdata$_onexit(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 $pdata$?configure_argv@__scrt_narrow_argv_policy@@SAHXZ(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 $pdata$__scrt_get_show_window_mode(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 $pdata$__scrt_is_managed_app(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 $pdata$__scrt_unhandled_exception_filter(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 $pdata$__castguard_check_failure_os_handled_wrapper(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 $pdata$__castguard_check_failure_user_handled_wrapper(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 $pdata$__castguard_check_failure_os_handled(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 $pdata$__castguard_check_failure_user_handled(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 $pdata$__castguard_slow_path_check_os_handled(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 $pdata$__castguard_slow_path_check_user_handled(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 $pdata$stbi__pnm_test(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__hdr_test_core(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__gif_test(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__pic_test(从 stb_image.obj 中) + 已丢弃 $pdata$2$stbi__pic_test(从 stb_image.obj 中) + 已丢弃 $pdata$3$stbi__pic_test(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__pic_test_core(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__psd_test(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__bmp_test(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__bmp_test_raw(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__png_test(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__png_load(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__do_png(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__de_iphone(从 stb_image.obj 中) + 已丢弃 $pdata$0$stbi__de_iphone(从 stb_image.obj 中) + 已丢弃 $pdata$1$stbi__de_iphone(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__expand_png_palette(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__paeth(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__get_chunk_header(从 stb_image.obj 中) + 已丢弃 $pdata$stbi_zlib_decode_malloc_guesssize_headerflag(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__zhuffman_decode(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__zreceive(从 stb_image.obj 中) + 已丢弃 $pdata$0$stbi__zreceive(从 stb_image.obj 中) + 已丢弃 $pdata$1$stbi__zreceive(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__jpeg_test(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__jpeg_load(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__skip_jpeg_junk_at_end(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__jpeg_get_bit(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__jpeg_get_bits(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__extend_receive(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__jpeg_huff_decode(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__build_fast_ac(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__at_eof(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__get8(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__fopen(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__start_file(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__start_callbacks(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__sse2_available(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__cpuid3(从 stb_image.obj 中) + 已丢弃“.idata$4”(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃“.idata$4”(从 vcruntime.lib(VCRUNTIME140.dll) 中) + 已丢弃“.idata$4”(从 vcruntime.lib(VCRUNTIME140.dll) 中) + 已丢弃“.idata$4”(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃“.idata$4”(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃“.idata$4”(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃“.idata$4”(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃“.idata$4”(从 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中) + 已丢弃“.idata$4”(从 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中) + 已丢弃 __imp_GetStartupInfoW(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 __imp___current_exception_context(从 vcruntime.lib(VCRUNTIME140.dll) 中) + 已丢弃 __imp___current_exception(从 vcruntime.lib(VCRUNTIME140.dll) 中) + 已丢弃 __imp__crt_atexit(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃 __imp__crt_at_quick_exit(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃 __imp_terminate(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃 __imp__register_onexit_function(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃 __imp_ftell(从 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中) + 已丢弃 __imp_strtok(从 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中) + 已丢弃“.idata$6”(从 vcruntime.lib(VCRUNTIME140.dll) 中) + 已丢弃“.idata$6”(从 vcruntime.lib(VCRUNTIME140.dll) 中) + 已丢弃“.idata$6”(从 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中) + 已丢弃“.idata$6”(从 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中) + 已丢弃“.idata$6”(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃“.idata$6”(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃“.idata$6”(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃“.idata$6”(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃“.idata$6”(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 __check_isa_support(从 intrinsic.obj 中) + 已丢弃 check_isa(从 intrinsic.obj 中) + 已丢弃 load_intrinsic_sse(从 intrinsic.obj 中) + 已丢弃 load_intrinsic_avx(从 intrinsic.obj 中) + 已丢弃 load_intrinsic_512(从 intrinsic.obj 中) + 已丢弃 stbi__cpuid3(从 stb_image.obj 中) + 已丢弃 stbi__sse2_available(从 stb_image.obj 中) + 已丢弃 stbi__start_callbacks(从 stb_image.obj 中) + 已丢弃 stbi__start_file(从 stb_image.obj 中) + 已丢弃 stbi__rewind(从 stb_image.obj 中) + 已丢弃 stbi__err(从 stb_image.obj 中) + 已丢弃 stbi__malloc(从 stb_image.obj 中) + 已丢弃 stbi__addsizes_valid(从 stb_image.obj 中) + 已丢弃 stbi__mul2sizes_valid(从 stb_image.obj 中) + 已丢弃 stbi__mad2sizes_valid(从 stb_image.obj 中) + 已丢弃 stbi__mad3sizes_valid(从 stb_image.obj 中) + 已丢弃 stbi__malloc_mad2(从 stb_image.obj 中) + 已丢弃 stbi__malloc_mad3(从 stb_image.obj 中) + 已丢弃 stbi__fopen(从 stb_image.obj 中) + 已丢弃 stbi__get8(从 stb_image.obj 中) + 已丢弃 stbi__at_eof(从 stb_image.obj 中) + 已丢弃 stbi__compute_y(从 stb_image.obj 中) + 已丢弃 stbi__compute_y_16(从 stb_image.obj 中) + 已丢弃 stbi__build_fast_ac(从 stb_image.obj 中) + 已丢弃 stbi__jpeg_huff_decode(从 stb_image.obj 中) + 已丢弃 stbi__extend_receive(从 stb_image.obj 中) + 已丢弃 stbi__jpeg_get_bits(从 stb_image.obj 中) + 已丢弃 stbi__jpeg_get_bit(从 stb_image.obj 中) + 已丢弃 stbi__clamp(从 stb_image.obj 中) + 已丢弃 stbi__jpeg_reset(从 stb_image.obj 中) + 已丢弃 stbi__jpeg_dequantize(从 stb_image.obj 中) + 已丢弃 stbi__skip_jpeg_junk_at_end(从 stb_image.obj 中) + 已丢弃 stbi__cleanup_jpeg(从 stb_image.obj 中) + 已丢弃 stbi__blinn_8x8(从 stb_image.obj 中) + 已丢弃 stbi__jpeg_load(从 stb_image.obj 中) + 已丢弃 stbi__jpeg_test(从 stb_image.obj 中) + 已丢弃 stbi__bitreverse16(从 stb_image.obj 中) + 已丢弃 stbi__bit_reverse(从 stb_image.obj 中) + 已丢弃 stbi__zeof(从 stb_image.obj 中) + 已丢弃 stbi__zget8(从 stb_image.obj 中) + 已丢弃 stbi__zreceive(从 stb_image.obj 中) + 已丢弃 stbi__zhuffman_decode(从 stb_image.obj 中) + 已丢弃 stbi__parse_zlib_header(从 stb_image.obj 中) + 已丢弃 stbi__do_zlib(从 stb_image.obj 中) + 已丢弃 stbi_zlib_decode_malloc_guesssize_headerflag(从 stb_image.obj 中) + 已丢弃 stbi__get_chunk_header(从 stb_image.obj 中) + 已丢弃 stbi__paeth(从 stb_image.obj 中) + 已丢弃 stbi__compute_transparency(从 stb_image.obj 中) + 已丢弃 stbi__compute_transparency16(从 stb_image.obj 中) + 已丢弃 stbi__expand_png_palette(从 stb_image.obj 中) + 已丢弃 stbi__de_iphone(从 stb_image.obj 中) + 已丢弃 stbi__do_png(从 stb_image.obj 中) + 已丢弃 stbi__png_load(从 stb_image.obj 中) + 已丢弃 stbi__png_test(从 stb_image.obj 中) + 已丢弃 stbi__bmp_test_raw(从 stb_image.obj 中) + 已丢弃 stbi__bmp_test(从 stb_image.obj 中) + 已丢弃 stbi__bitcount(从 stb_image.obj 中) + 已丢弃 stbi__shiftsigned(从 stb_image.obj 中) + 已丢弃 stbi__tga_get_comp(从 stb_image.obj 中) + 已丢弃 stbi__psd_test(从 stb_image.obj 中) + 已丢弃 stbi__pic_test_core(从 stb_image.obj 中) + 已丢弃 stbi__copyval(从 stb_image.obj 中) + 已丢弃 stbi__pic_test(从 stb_image.obj 中) + 已丢弃 stbi__gif_test(从 stb_image.obj 中) + 已丢弃 stbi__hdr_test_core(从 stb_image.obj 中) + 已丢弃 stbi__pnm_test(从 stb_image.obj 中) + 已丢弃 stbi__pnm_isspace(从 stb_image.obj 中) + 已丢弃 stbi__pnm_isdigit(从 stb_image.obj 中) + 已丢弃 _glfwEncodeUTF8(从 glfw3.lib(init.obj) 中) + 已丢弃 _glfwParseUriList(从 glfw3.lib(init.obj) 中) + 已丢弃 __report_rangecheckfailure(从 MSVCRT.lib(gs_report.obj) 中) + 已丢弃 __report_securityfailure(从 MSVCRT.lib(gs_report.obj) 中) + 已丢弃 __report_securityfailureEx(从 MSVCRT.lib(gs_report.obj) 中) + 已丢弃 capture_current_context(从 MSVCRT.lib(gs_report.obj) 中) + 已丢弃 "int __cdecl dllmain_raw(struct HINSTANCE__ * const,unsigned long,void * const)" (?dllmain_raw@@YAHQEAUHINSTANCE__@@KQEAX@Z)(从 MSVCRT.lib(dll_dllmain.obj) 中) + 已丢弃 _CRT_INIT(从 MSVCRT.lib(dll_dllmain.obj) 中) + 已丢弃 __get_entropy(从 MSVCRT.lib(gs_support.obj) 中) + 已丢弃 "public: static int __cdecl __scrt_narrow_argv_policy::configure_argv(void)" (?configure_argv@__scrt_narrow_argv_policy@@SAHXZ)(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 "struct _IMAGE_SECTION_HEADER * __cdecl find_pe_section(unsigned char * const,unsigned __int64)" (?find_pe_section@@YAPEAU_IMAGE_SECTION_HEADER@@QEAE_K@Z)(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 "public: static int __cdecl __scrt_narrow_environment_policy::initialize_environment(void)" (?initialize_environment@__scrt_narrow_environment_policy@@SAHXZ)(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 "bool __cdecl is_potentially_valid_image_base(void * const)" (?is_potentially_valid_image_base@@YA_NQEAX@Z)(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 NtCurrentTeb(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 _onexit(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 at_quick_exit(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 atexit(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 __scrt_get_show_window_mode(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 __scrt_initialize_mta(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 __scrt_initialize_winrt(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 __scrt_is_managed_app(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 __scrt_set_unhandled_exception_filter(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 __scrt_stub_for_initialize_mta(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 __scrt_unhandled_exception_filter(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 ReadNoFence64(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 ReadPointerNoFence(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_check_failure_debugbreak(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_check_failure_fastfail(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_check_failure_nop(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_check_failure_os_handled(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_check_failure_os_handled_wrapper(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_check_failure_user_handled(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_check_failure_user_handled_wrapper(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_compat_check(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_set_user_handler(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_slow_path_check_debugbreak(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_slow_path_check_fastfail(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_slow_path_check_nop(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_slow_path_check_os_handled(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_slow_path_check_user_handled(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_slow_path_compat_check(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 _guard_icall_checks_enforced(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 _guard_rf_checks_enforced(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __current_exception(从 vcruntime.lib(VCRUNTIME140.dll) 中) + 已丢弃 __current_exception_context(从 vcruntime.lib(VCRUNTIME140.dll) 中) + 已丢弃 ftell(从 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中) + 已丢弃 ferror(从 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中) + 已丢弃 fclose(从 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中) + 已丢弃 realloc(从 ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) 中) + 已丢弃 fseek(从 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中) + 已丢弃 fgetc(从 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中) + 已丢弃 strncmp(从 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中) + 已丢弃 fopen_s(从 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中) + 已丢弃 strtol(从 ucrt.lib(api-ms-win-crt-convert-l1-1-0.dll) 中) + 已丢弃 ldexp(从 ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) 中) + 已丢弃 free(从 ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) 中) + 已丢弃 ungetc(从 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中) + 已丢弃 feof(从 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中) + 已丢弃 fread(从 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中) + 已丢弃 malloc(从 ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) 中) + 已丢弃 strcpy_s(从 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中) + 已丢弃 strncpy(从 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中) + 已丢弃 __stdio_common_vsscanf(从 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中) + 已丢弃 strcspn(从 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中) + 已丢弃 strspn(从 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中) + 已丢弃 strtoul(从 ucrt.lib(api-ms-win-crt-convert-l1-1-0.dll) 中) + 已丢弃 strtok(从 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中) + 已丢弃 __stdio_common_vsprintf(从 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中) + 已丢弃 qsort(从 ucrt.lib(api-ms-win-crt-utility-l1-1-0.dll) 中) + 已丢弃 _register_onexit_function(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃 _crt_atexit(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃 _crt_at_quick_exit(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃 terminate(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃 InitializeCriticalSection(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 EnterCriticalSection(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 LeaveCriticalSection(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 DeleteCriticalSection(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 TlsAlloc(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 TlsGetValue(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 TlsSetValue(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 TlsFree(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 QueryPerformanceCounter(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 QueryPerformanceFrequency(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 VerSetConditionMask(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 GetLastError(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 GetModuleHandleExW(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 FormatMessageW(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 MultiByteToWideChar(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 WideCharToMultiByte(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 FreeLibrary(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 GetProcAddress(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 LoadLibraryA(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 GetModuleHandleW(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 GlobalAlloc(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 GlobalUnlock(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 GlobalLock(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 GlobalFree(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 SetThreadExecutionState(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 RtlCaptureContext(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 RtlLookupFunctionEntry(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 RtlVirtualUnwind(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 UnhandledExceptionFilter(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 SetUnhandledExceptionFilter(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 GetCurrentProcess(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 TerminateProcess(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 IsProcessorFeaturePresent(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 GetCurrentProcessId(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 GetCurrentThreadId(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 GetSystemTimeAsFileTime(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 InitializeSListHead(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 IsDebuggerPresent(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 GetStartupInfoW(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 TranslateMessage(从 user32.lib(USER32.dll) 中) + 已丢弃 DispatchMessageW(从 user32.lib(USER32.dll) 中) + 已丢弃 PeekMessageW(从 user32.lib(USER32.dll) 中) + 已丢弃 RegisterDeviceNotificationW(从 user32.lib(USER32.dll) 中) + 已丢弃 UnregisterDeviceNotification(从 user32.lib(USER32.dll) 中) + 已丢弃 DefWindowProcW(从 user32.lib(USER32.dll) 中) + 已丢弃 UnregisterClassW(从 user32.lib(USER32.dll) 中) + 已丢弃 RegisterClassExW(从 user32.lib(USER32.dll) 中) + 已丢弃 CreateWindowExW(从 user32.lib(USER32.dll) 中) + 已丢弃 DestroyWindow(从 user32.lib(USER32.dll) 中) + 已丢弃 ShowWindow(从 user32.lib(USER32.dll) 中) + 已丢弃 ToUnicode(从 user32.lib(USER32.dll) 中) + 已丢弃 MapVirtualKeyW(从 user32.lib(USER32.dll) 中) + 已丢弃 GetDC(从 user32.lib(USER32.dll) 中) + 已丢弃 ReleaseDC(从 user32.lib(USER32.dll) 中) + 已丢弃 ChangeDisplaySettingsExW(从 user32.lib(USER32.dll) 中) + 已丢弃 EnumDisplaySettingsW(从 user32.lib(USER32.dll) 中) + 已丢弃 EnumDisplaySettingsExW(从 user32.lib(USER32.dll) 中) + 已丢弃 EnumDisplayDevicesW(从 user32.lib(USER32.dll) 中) + 已丢弃 GetMonitorInfoW(从 user32.lib(USER32.dll) 中) + 已丢弃 EnumDisplayMonitors(从 user32.lib(USER32.dll) 中) + 已丢弃 TrackMouseEvent(从 user32.lib(USER32.dll) 中) + 已丢弃 GetMessageTime(从 user32.lib(USER32.dll) 中) + 已丢弃 SendMessageW(从 user32.lib(USER32.dll) 中) + 已丢弃 PostMessageW(从 user32.lib(USER32.dll) 中) + 已丢弃 WaitMessage(从 user32.lib(USER32.dll) 中) + 已丢弃 GetLayeredWindowAttributes(从 user32.lib(USER32.dll) 中) + 已丢弃 SetLayeredWindowAttributes(从 user32.lib(USER32.dll) 中) + 已丢弃 FlashWindow(从 user32.lib(USER32.dll) 中) + 已丢弃 MoveWindow(从 user32.lib(USER32.dll) 中) + 已丢弃 SetWindowPos(从 user32.lib(USER32.dll) 中) + 已丢弃 GetWindowPlacement(从 user32.lib(USER32.dll) 中) + 已丢弃 SetWindowPlacement(从 user32.lib(USER32.dll) 中) + 已丢弃 IsWindowVisible(从 user32.lib(USER32.dll) 中) + 已丢弃 IsIconic(从 user32.lib(USER32.dll) 中) + 已丢弃 BringWindowToTop(从 user32.lib(USER32.dll) 中) + 已丢弃 IsZoomed(从 user32.lib(USER32.dll) 中) + 已丢弃 OpenClipboard(从 user32.lib(USER32.dll) 中) + 已丢弃 CloseClipboard(从 user32.lib(USER32.dll) 中) + 已丢弃 SetClipboardData(从 user32.lib(USER32.dll) 中) + 已丢弃 GetClipboardData(从 user32.lib(USER32.dll) 中) + 已丢弃 EmptyClipboard(从 user32.lib(USER32.dll) 中) + 已丢弃 SetFocus(从 user32.lib(USER32.dll) 中) + 已丢弃 GetActiveWindow(从 user32.lib(USER32.dll) 中) + 已丢弃 GetKeyState(从 user32.lib(USER32.dll) 中) + 已丢弃 SetCapture(从 user32.lib(USER32.dll) 中) + 已丢弃 ReleaseCapture(从 user32.lib(USER32.dll) 中) + 已丢弃 MsgWaitForMultipleObjects(从 user32.lib(USER32.dll) 中) + 已丢弃 GetSystemMetrics(从 user32.lib(USER32.dll) 中) + 已丢弃 SetForegroundWindow(从 user32.lib(USER32.dll) 中) + 已丢弃 SetPropW(从 user32.lib(USER32.dll) 中) + 已丢弃 GetPropW(从 user32.lib(USER32.dll) 中) + 已丢弃 RemovePropW(从 user32.lib(USER32.dll) 中) + 已丢弃 SetWindowTextW(从 user32.lib(USER32.dll) 中) + 已丢弃 GetClientRect(从 user32.lib(USER32.dll) 中) + 已丢弃 GetWindowRect(从 user32.lib(USER32.dll) 中) + 已丢弃 AdjustWindowRectEx(从 user32.lib(USER32.dll) 中) + 已丢弃 SetCursorPos(从 user32.lib(USER32.dll) 中) + 已丢弃 SetCursor(从 user32.lib(USER32.dll) 中) + 已丢弃 GetCursorPos(从 user32.lib(USER32.dll) 中) + 已丢弃 ClientToScreen(从 user32.lib(USER32.dll) 中) + 已丢弃 ScreenToClient(从 user32.lib(USER32.dll) 中) + 已丢弃 WindowFromPoint(从 user32.lib(USER32.dll) 中) + 已丢弃 ClipCursor(从 user32.lib(USER32.dll) 中) + 已丢弃 SetRect(从 user32.lib(USER32.dll) 中) + 已丢弃 OffsetRect(从 user32.lib(USER32.dll) 中) + 已丢弃 PtInRect(从 user32.lib(USER32.dll) 中) + 已丢弃 GetWindowLongW(从 user32.lib(USER32.dll) 中) + 已丢弃 SetWindowLongW(从 user32.lib(USER32.dll) 中) + 已丢弃 GetClassLongPtrW(从 user32.lib(USER32.dll) 中) + 已丢弃 LoadCursorW(从 user32.lib(USER32.dll) 中) + 已丢弃 DestroyIcon(从 user32.lib(USER32.dll) 中) + 已丢弃 LoadImageW(从 user32.lib(USER32.dll) 中) + 已丢弃 CreateIconIndirect(从 user32.lib(USER32.dll) 中) + 已丢弃 SystemParametersInfoW(从 user32.lib(USER32.dll) 中) + 已丢弃 MonitorFromWindow(从 user32.lib(USER32.dll) 中) + 已丢弃 GetRawInputData(从 user32.lib(USER32.dll) 中) + 已丢弃 RegisterRawInputDevices(从 user32.lib(USER32.dll) 中) + 已丢弃 GetRawInputDeviceInfoA(从 user32.lib(USER32.dll) 中) + 已丢弃 GetRawInputDeviceList(从 user32.lib(USER32.dll) 中) + 已丢弃 CreateDCW(从 gdi32.lib(GDI32.dll) 中) + 已丢弃 DeleteDC(从 gdi32.lib(GDI32.dll) 中) + 已丢弃 GetDeviceCaps(从 gdi32.lib(GDI32.dll) 中) + 已丢弃 GetDeviceGammaRamp(从 gdi32.lib(GDI32.dll) 中) + 已丢弃 SetDeviceGammaRamp(从 gdi32.lib(GDI32.dll) 中) + 已丢弃 CreateBitmap(从 gdi32.lib(GDI32.dll) 中) + 已丢弃 CreateRectRgn(从 gdi32.lib(GDI32.dll) 中) + 已丢弃 DeleteObject(从 gdi32.lib(GDI32.dll) 中) + 已丢弃 CreateDIBSection(从 gdi32.lib(GDI32.dll) 中) + 已丢弃 ChoosePixelFormat(从 gdi32.lib(GDI32.dll) 中) + 已丢弃 DescribePixelFormat(从 gdi32.lib(GDI32.dll) 中) + 已丢弃 SetPixelFormat(从 gdi32.lib(GDI32.dll) 中) + 已丢弃 SwapBuffers(从 gdi32.lib(GDI32.dll) 中) + 已丢弃 DragQueryFileW(从 shell32.lib(SHELL32.dll) 中) + 已丢弃 DragQueryPoint(从 shell32.lib(SHELL32.dll) 中) + 已丢弃 DragFinish(从 shell32.lib(SHELL32.dll) 中) + 已丢弃 DragAcceptFiles(从 shell32.lib(SHELL32.dll) 中) + 已选择符号: + extensionSupportedOSMesa (在 glfw3.lib(osmesa_context.obj) 中) + 已替换符号: + __scrt_stub_for_is_c_termination_complete (在 MSVCRT.lib(ucrt_stubs.obj) 中) + _glfwGetPhysicalDevicePresentationSupportNull (在 glfw3.lib(null_window.obj) 中) + _glfwGetEGLPlatformNull (在 glfw3.lib(null_window.obj) 中) + _glfwGetEGLNativeWindowNull (在 glfw3.lib(null_window.obj) 中) + _glfwGetEGLNativeDisplayNull (在 glfw3.lib(null_window.obj) 中) + _glfwPollJoystickNull (在 glfw3.lib(null_joystick.obj) 中) + 已选择符号: + _glfwFreeMonitorWin32 (在 glfw3.lib(win32_monitor.obj) 中) + 已替换符号: + _glfwSetRawMouseMotionNull (在 glfw3.lib(null_window.obj) 中) + _glfwSetWindowMousePassthroughNull (在 glfw3.lib(null_window.obj) 中) + _glfwSetWindowIconNull (在 glfw3.lib(null_window.obj) 中) + _glfwWaitEventsTimeoutNull (在 glfw3.lib(null_window.obj) 中) + _glfwPollEventsNull (在 glfw3.lib(null_window.obj) 中) + _glfwRequestWindowAttentionNull (在 glfw3.lib(null_window.obj) 中) + _glfwSetCursorModeNull (在 glfw3.lib(null_window.obj) 中) + _glfwDestroyCursorNull (在 glfw3.lib(null_window.obj) 中) + _guard_check_icall_nop (在 MSVCRT.lib(guard_support.obj) 中) + _glfwUpdateGamepadGUIDNull (在 glfw3.lib(null_joystick.obj) 中) + _glfwTerminateJoysticksNull (在 glfw3.lib(null_joystick.obj) 中) + _glfwSetCursorNull (在 glfw3.lib(null_window.obj) 中) + swapIntervalOSMesa (在 glfw3.lib(osmesa_context.obj) 中) + _glfwGetRequiredInstanceExtensionsNull (在 glfw3.lib(null_window.obj) 中) + _glfwWaitEventsNull (在 glfw3.lib(null_window.obj) 中) + _glfwSetWindowTitleNull (在 glfw3.lib(null_window.obj) 中) + _glfwPostEmptyEventNull (在 glfw3.lib(null_window.obj) 中) + swapBuffersOSMesa (在 glfw3.lib(osmesa_context.obj) 中) + 已选择符号: + __scrt_stub_for_acrt_initialize (在 MSVCRT.lib(ucrt_stubs.obj) 中) + 已替换符号: + __scrt_stub_for_acrt_uninitialize_critical (在 MSVCRT.lib(ucrt_stubs.obj) 中) + __scrt_stub_for_acrt_thread_attach (在 MSVCRT.lib(ucrt_stubs.obj) 中) + __scrt_stub_for_acrt_thread_detach (在 MSVCRT.lib(ucrt_stubs.obj) 中) + __scrt_stub_for_acrt_uninitialize (在 MSVCRT.lib(ucrt_stubs.obj) 中) + 已选择符号: + DllMain (在 dllmain.obj 中) + 已替换符号: + _glfwCreateCursorNull (在 glfw3.lib(null_window.obj) 中) + _get_startup_argv_mode (在 MSVCRT.lib(argv_mode.obj) 中) + _glfwCreateStandardCursorNull (在 glfw3.lib(null_window.obj) 中) + _glfwRawMouseMotionSupportedNull (在 glfw3.lib(null_window.obj) 中) + _glfwInitJoysticksNull (在 glfw3.lib(null_joystick.obj) 中) + _glfwRawMouseMotionSupportedWin32 (在 glfw3.lib(win32_window.obj) 中) + 已选择符号: + _glfwGetMonitorContentScaleNull (在 glfw3.lib(null_monitor.obj) 中) + 已替换符号: + _glfwGetWindowContentScaleNull (在 glfw3.lib(null_window.obj) 中) + 已选择符号: + _glfwGetFramebufferSizeNull (在 glfw3.lib(null_window.obj) 中) + 已替换符号: + _glfwGetWindowSizeNull (在 glfw3.lib(null_window.obj) 中) + 已选择符号: + _glfwSetWindowDecoratedWin32 (在 glfw3.lib(win32_window.obj) 中) + 已替换符号: + _glfwSetWindowResizableWin32 (在 glfw3.lib(win32_window.obj) 中) + 已选择符号: + _glfwGetFramebufferSizeWin32 (在 glfw3.lib(win32_window.obj) 中) + 已替换符号: + _glfwGetWindowSizeWin32 (在 glfw3.lib(win32_window.obj) 中) + 已选择符号: + _glfwSetWindowAspectRatioNull (在 glfw3.lib(null_window.obj) 中) + 已替换符号: + _glfwSetWindowSizeLimitsNull (在 glfw3.lib(null_window.obj) 中) + 已选择符号: + $unwind$_glfwGetWindowSizeWin32 (在 glfw3.lib(win32_window.obj) 中) + 已替换符号: + $unwind$_glfwGetFramebufferSizeWin32 (在 glfw3.lib(win32_window.obj) 中) + 已选择符号: + $unwind$stbi__stdio_skip (在 stb_image.obj 中) + 已替换符号: + $unwind$destroyContextOSMesa (在 glfw3.lib(osmesa_context.obj) 中) + $unwind$glfwGetGamepadName (在 glfw3.lib(input.obj) 中) + $unwind$__scrt_uninitialize_crt (在 MSVCRT.lib(utility.obj) 中) + $unwind$_glfwGetVideoModesNull (在 glfw3.lib(null_monitor.obj) 中) + $unwind$_glfwDestroyWindowNull (在 glfw3.lib(null_window.obj) 中) + $unwind$_glfwIconifyWindowNull (在 glfw3.lib(null_window.obj) 中) + $unwind$glfwDestroyWindow (在 glfw3.lib(window.obj) 中) + $unwind$_glfwRestoreWindowNull (在 glfw3.lib(null_window.obj) 中) + $unwind$glfwSetJoystickCallback (在 glfw3.lib(input.obj) 中) + $unwind$glfwShowWindow (在 glfw3.lib(window.obj) 中) + $unwind$glfwJoystickIsGamepad (在 glfw3.lib(input.obj) 中) + $unwind$glfwGetJoystickGUID (在 glfw3.lib(input.obj) 中) + $unwind$glfwGetJoystickName (在 glfw3.lib(input.obj) 中) + $unwind$_glfwHideWindowNull (在 glfw3.lib(null_window.obj) 中) + $unwind$releaseMonitor (在 glfw3.lib(win32_window.obj) 中) + $unwind$acquireMonitor (在 glfw3.lib(win32_window.obj) 中) + $unwind$glfwJoystickPresent (在 glfw3.lib(input.obj) 中) + $unwind$_glfwSetClipboardStringNull (在 glfw3.lib(null_window.obj) 中) + $unwind$__raise_securityfailure (在 MSVCRT.lib(gs_report.obj) 中) + $unwind$_glfwPlatformDestroyMutex (在 glfw3.lib(win32_thread.obj) 中) + $unwind$_glfwPlatformCreateMutex (在 glfw3.lib(win32_thread.obj) 中) + $unwind$_glfwPlatformDestroyTls (在 glfw3.lib(win32_thread.obj) 中) + $unwind$__scrt_release_startup_lock (在 MSVCRT.lib(utility.obj) 中) + $unwind$_glfwPlatformCreateTls (在 glfw3.lib(win32_thread.obj) 中) + $unwind$_glfwInitNull (在 glfw3.lib(null_init.obj) 中) + $unwind$glfwMakeContextCurrent (在 glfw3.lib(context.obj) 中) + $unwind$glfwGetProcAddress (在 glfw3.lib(context.obj) 中) + $unwind$glfwSwapInterval (在 glfw3.lib(context.obj) 中) + $unwind$__scrt_initialize_onexit_tables (在 MSVCRT.lib(utility.obj) 中) + $unwind$_glfwGetWindowOpacityWin32 (在 glfw3.lib(win32_window.obj) 中) + $unwind$_glfwWindowFocusedWin32 (在 glfw3.lib(win32_window.obj) 中) + $unwind$_glfwFocusWindowWin32 (在 glfw3.lib(win32_window.obj) 中) + $unwind$stbi__stdio_eof (在 stb_image.obj 中) + $unwind$stbi__parse_uncompressed_block (在 stb_image.obj 中) + $unwind$initGL (在 StgSharpC.obj 中) + $unwind$_glfw_realloc (在 glfw3.lib(init.obj) 中) + $unwind$stbi__tga_read_rgb16 (在 stb_image.obj 中) + $unwind$_glfw_calloc (在 glfw3.lib(init.obj) 中) + $unwind$makeContextCurrentWGL (在 glfw3.lib(wgl_context.obj) 中) + $unwind$swapIntervalWGL (在 glfw3.lib(wgl_context.obj) 中) + $unwind$_glfwCreateCursorWin32 (在 glfw3.lib(win32_window.obj) 中) + $unwind$extensionSupportedWGL (在 glfw3.lib(wgl_context.obj) 中) + $unwind$getProcAddressWGL (在 glfw3.lib(wgl_context.obj) 中) + $unwind$_glfwSetCursorWin32 (在 glfw3.lib(win32_window.obj) 中) + $unwind$_glfwFreeGammaArrays (在 glfw3.lib(monitor.obj) 中) + $unwind$destroyContextWGL (在 glfw3.lib(wgl_context.obj) 中) + $unwind$refreshVideoModes (在 glfw3.lib(monitor.obj) 中) + $unwind$glfwGetError (在 glfw3.lib(init.obj) 中) + $unwind$closeJoystick (在 glfw3.lib(win32_joystick.obj) 中) + $unwind$makeContextCurrentEGL (在 glfw3.lib(egl_context.obj) 中) + $unwind$glfwGetRequiredInstanceExtensions (在 glfw3.lib(vulkan.obj) 中) + $unwind$_glfwInitVulkan (在 glfw3.lib(vulkan.obj) 中) + $unwind$swapBuffersEGL (在 glfw3.lib(egl_context.obj) 中) + $unwind$findValidMapping (在 glfw3.lib(input.obj) 中) + $unwind$_glfwCenterCursorInContentArea (在 glfw3.lib(input.obj) 中) + $unwind$_glfwFreeJoystick (在 glfw3.lib(input.obj) 中) + $unwind$extensionSupportedEGL (在 glfw3.lib(egl_context.obj) 中) + $unwind$getProcAddressEGL (在 glfw3.lib(egl_context.obj) 中) + $unwind$destroyContextEGL (在 glfw3.lib(egl_context.obj) 中) + $unwind$_glfwDestroyWindowWin32 (在 glfw3.lib(win32_window.obj) 中) + 已选择符号: + $unwind$glfwGetTime (在 glfw3.lib(input.obj) 中) + 已替换符号: + $unwind$enableRawMouseMotion (在 glfw3.lib(win32_window.obj) 中) + $unwind$_glfwWaitEventsTimeoutWin32 (在 glfw3.lib(win32_window.obj) 中) + $unwind$_glfwSetRawMouseMotionWin32 (在 glfw3.lib(win32_window.obj) 中) + $unwind$disableRawMouseMotion (在 glfw3.lib(win32_window.obj) 中) + 已选择符号: + $unwind$_glfwInputJoystickHat (在 glfw3.lib(input.obj) 中) + 已替换符号: + $unwind$compareVideoModes (在 glfw3.lib(monitor.obj) 中) + 已选择符号: + $unwind$loadImageData (在 StgSharpC.obj 中) + 已替换符号: + $unwind$enableCursor (在 glfw3.lib(win32_window.obj) 中) + $unwind$makeContextCurrentOSMesa (在 glfw3.lib(osmesa_context.obj) 中) + $unwind$_glfwRestoreVideoModeWin32 (在 glfw3.lib(win32_monitor.obj) 中) + $unwind$_glfwCreateStandardCursorWin32 (在 glfw3.lib(win32_window.obj) 中) + 已选择符号: + $unwind$?fin$0@?0??dllmain_crt_process_attach@@YAHQEAUHINSTANCE__@@QEAX@Z@4HA (在 MSVCRT.lib(dll_dllmain.obj) 中) + 已替换符号: + $unwind$?fin$0@?0??dllmain_crt_process_detach@@YAH_N@Z@4HA (在 MSVCRT.lib(dll_dllmain.obj) 中) + $unwind$?fin$1@?0??dllmain_crt_process_detach@@YAH_N@Z@4HA (在 MSVCRT.lib(dll_dllmain.obj) 中) + 已选择符号: + $unwind$stbi__get_marker (在 stb_image.obj 中) + 已替换符号: + $unwind$glfwExtensionSupported (在 glfw3.lib(context.obj) 中) + $unwind$glfwDestroyCursor (在 glfw3.lib(input.obj) 中) + $unwind$swapBuffersWGL (在 glfw3.lib(wgl_context.obj) 中) + $unwind$glfwCreateStandardCursor (在 glfw3.lib(input.obj) 中) + 已选择符号: + $unwind$stbi__resample_row_v_2 (在 stb_image.obj 中) + 已替换符号: + $unwind$__GSHandlerCheckCommon (在 MSVCRT.lib(gshandler.obj) 中) + $unwind$chooseImage (在 glfw3.lib(win32_window.obj) 中) + 已选择符号: + $unwind$glfwDefaultWindowHints (在 glfw3.lib(window.obj) 中) + 已替换符号: + $unwind$__scrt_initialize_default_local_stdio_options (在 MSVCRT.lib(default_local_stdio_options.obj) 中) + $unwind$__GSHandlerCheck (在 MSVCRT.lib(gshandler.obj) 中) + $unwind$glfwGetOSMesaContext (在 glfw3.lib(osmesa_context.obj) 中) + $unwind$glfwGetEGLContext (在 glfw3.lib(egl_context.obj) 中) + $unwind$?dllmain_crt_dispatch@@YAHQEAUHINSTANCE__@@KQEAX@Z (在 MSVCRT.lib(dll_dllmain.obj) 中) + $unwind$glfwGetEGLDisplay (在 glfw3.lib(egl_context.obj) 中) + $unwind$glfwGetTimerValue (在 glfw3.lib(input.obj) 中) + $unwind$__scrt_dllmain_before_initialize_c (在 MSVCRT.lib(utility.obj) 中) + $unwind$__scrt_acquire_startup_lock (在 MSVCRT.lib(utility.obj) 中) + $unwind$__scrt_dllmain_after_initialize_c (在 MSVCRT.lib(utility.obj) 中) + $unwind$glfwSetWindowContentScaleCallback (在 glfw3.lib(window.obj) 中) + $unwind$_glfwGetClipboardStringWin32 (在 glfw3.lib(win32_window.obj) 中) + $unwind$_glfwTerminateNull (在 glfw3.lib(null_init.obj) 中) + $unwind$glfwRawMouseMotionSupported (在 glfw3.lib(input.obj) 中) + $unwind$glfwGetKeyName (在 glfw3.lib(input.obj) 中) + $unwind$glfwGetKeyScancode (在 glfw3.lib(input.obj) 中) + $unwind$glfwGetKey (在 glfw3.lib(input.obj) 中) + $unwind$glfwGetMouseButton (在 glfw3.lib(input.obj) 中) + $unwind$__scrt_dllmain_crt_thread_attach (在 MSVCRT.lib(utility.obj) 中) + $unwind$glfwSetWindowMaximizeCallback (在 glfw3.lib(window.obj) 中) + $unwind$glfwVulkanSupported (在 glfw3.lib(vulkan.obj) 中) + $unwind$_glfwGetScancodeNameNull (在 glfw3.lib(null_window.obj) 中) + $unwind$__scrt_dllmain_crt_thread_detach (在 MSVCRT.lib(utility.obj) 中) + $unwind$glfwSetCharCallback (在 glfw3.lib(input.obj) 中) + $unwind$glfwSetCharModsCallback (在 glfw3.lib(input.obj) 中) + $unwind$glfwSetMouseButtonCallback (在 glfw3.lib(input.obj) 中) + $unwind$glfwSetCursorPosCallback (在 glfw3.lib(input.obj) 中) + $unwind$glfwSetCursorEnterCallback (在 glfw3.lib(input.obj) 中) + $unwind$glfwSetScrollCallback (在 glfw3.lib(input.obj) 中) + $unwind$glfwSetDropCallback (在 glfw3.lib(input.obj) 中) + $unwind$glfwSetWindowFocusCallback (在 glfw3.lib(window.obj) 中) + $unwind$glfwSetWindowRefreshCallback (在 glfw3.lib(window.obj) 中) + $unwind$glfwGetWGLContext (在 glfw3.lib(wgl_context.obj) 中) + $unwind$glfwSetWindowCloseCallback (在 glfw3.lib(window.obj) 中) + $unwind$glfwSetWindowPosCallback (在 glfw3.lib(window.obj) 中) + $unwind$glfwGetWindowUserPointer (在 glfw3.lib(window.obj) 中) + $unwind$__scrt_initialize_crt (在 MSVCRT.lib(utility.obj) 中) + $unwind$_glfwTerminateOSMesa (在 glfw3.lib(osmesa_context.obj) 中) + $unwind$glfwGetWin32Adapter (在 glfw3.lib(win32_monitor.obj) 中) + $unwind$glfwGetWin32Monitor (在 glfw3.lib(win32_monitor.obj) 中) + $unwind$glfwGetWin32Window (在 glfw3.lib(win32_window.obj) 中) + $unwind$glfwGetTimerFrequency (在 glfw3.lib(input.obj) 中) + $unwind$glfwGetEGLSurface (在 glfw3.lib(egl_context.obj) 中) + $unwind$_glfwSetCursorPosWin32 (在 glfw3.lib(win32_window.obj) 中) + $unwind$updateCursorImage (在 glfw3.lib(win32_window.obj) 中) + $unwind$_glfwIsValidContextConfig (在 glfw3.lib(context.obj) 中) + $unwind$glfwGetCurrentContext (在 glfw3.lib(context.obj) 中) + $unwind$_glfwPollMonitorsNull (在 glfw3.lib(null_monitor.obj) 中) + $unwind$glfwGetInputMode (在 glfw3.lib(input.obj) 中) + $unwind$__scrt_dllmain_uninitialize_c (在 MSVCRT.lib(utility.obj) 中) + $unwind$__scrt_dllmain_uninitialize_critical (在 MSVCRT.lib(utility.obj) 中) + $unwind$terminate (在 glfw3.lib(init.obj) 中) + $unwind$glfwSetWindowIconifyCallback (在 glfw3.lib(window.obj) 中) + $unwind$glfwSetKeyCallback (在 glfw3.lib(input.obj) 中) + $unwind$glfwGetWindowOpacity (在 glfw3.lib(window.obj) 中) + $unwind$glfwInit (在 glfw3.lib(init.obj) 中) + $unwind$_glfwTerminateWin32 (在 glfw3.lib(win32_init.obj) 中) + $unwind$_glfwTerminateEGL (在 glfw3.lib(egl_context.obj) 中) + $unwind$_glfwWaitEventsWin32 (在 glfw3.lib(win32_window.obj) 中) + $unwind$glfwGetJoystickUserPointer (在 glfw3.lib(input.obj) 中) + $unwind$_glfwGetScancodeNameWin32 (在 glfw3.lib(win32_window.obj) 中) + $unwind$glfwGetClipboardString (在 glfw3.lib(input.obj) 中) + $unwind$glfwSetWindowSizeCallback (在 glfw3.lib(window.obj) 中) + $unwind$glfwSetFramebufferSizeCallback (在 glfw3.lib(window.obj) 中) + $unwind$glfwGetWindowMonitor (在 glfw3.lib(window.obj) 中) + $unwind$_glfwPlatformGetTimerValue (在 glfw3.lib(win32_time.obj) 中) + $unwind$glfwGetPlatform (在 glfw3.lib(platform.obj) 中) + $unwind$glfwPlatformSupported (在 glfw3.lib(platform.obj) 中) + $unwind$_glfwSelectPlatform (在 glfw3.lib(platform.obj) 中) + $unwind$glfwGetMonitors (在 glfw3.lib(monitor.obj) 中) + $unwind$glfwGetPrimaryMonitor (在 glfw3.lib(monitor.obj) 中) + $unwind$glfwGetMonitorName (在 glfw3.lib(monitor.obj) 中) + $unwind$glfwGetMonitorUserPointer (在 glfw3.lib(monitor.obj) 中) + $unwind$glfwSetMonitorCallback (在 glfw3.lib(monitor.obj) 中) + $unwind$glfwGetWindowAttrib (在 glfw3.lib(window.obj) 中) + $unwind$glfwWindowShouldClose (在 glfw3.lib(window.obj) 中) + $unwind$_glfwFramebufferTransparentWin32 (在 glfw3.lib(win32_window.obj) 中) + 已选择符号: + $unwind$stbi__setup_jpeg (在 stb_image.obj 中) + 已替换符号: + $unwind$index_pair_sse (在 string.obj 中) + 已选择符号: + $unwind$_glfwSetWindowFloatingWin32 (在 glfw3.lib(win32_window.obj) 中) + 已替换符号: + $unwind$_glfwInitOSMesa (在 glfw3.lib(osmesa_context.obj) 中) + 已选择符号: + $unwind$_glfwCreateWideStringFromUTF8Win32 (在 glfw3.lib(win32_init.obj) 中) + 已替换符号: + $unwind$_glfwSetClipboardStringWin32 (在 glfw3.lib(win32_window.obj) 中) + 已选择符号: + $unwind$_glfwConnectWin32 (在 glfw3.lib(win32_init.obj) 中) + 已替换符号: + $unwind$_glfwConnectNull (在 glfw3.lib(null_init.obj) 中) + 已选择符号: + $unwind$stbi__refill_buffer (在 stb_image.obj 中) + 已替换符号: + $unwind$_glfwGetEGLPlatformWin32 (在 glfw3.lib(win32_window.obj) 中) + $unwind$_RTC_Terminate (在 MSVCRT.lib(initsect.obj) 中) + $unwind$_glfwFocusWindowNull (在 glfw3.lib(null_window.obj) 中) + $unwind$_glfwSetWindowTitleWin32 (在 glfw3.lib(win32_window.obj) 中) + $unwind$_RTC_Initialize (在 MSVCRT.lib(initsect.obj) 中) + $unwind$createKeyTables (在 glfw3.lib(win32_init.obj) 中) + $unwind$_glfwInitGamepadMappings (在 glfw3.lib(input.obj) 中) + $unwind$glfwGetInstanceProcAddress (在 glfw3.lib(vulkan.obj) 中) + $unwind$_glfwStringInExtensionString (在 glfw3.lib(context.obj) 中) + $unwind$_glfw_strdup (在 glfw3.lib(init.obj) 中) + $unwind$_glfwSetGammaRampNull (在 glfw3.lib(null_monitor.obj) 中) + $unwind$glfwGetVideoModes (在 glfw3.lib(monitor.obj) 中) + $unwind$glfwSetGammaRamp (在 glfw3.lib(monitor.obj) 中) + $unwind$glfwSetInputMode (在 glfw3.lib(input.obj) 中) + $unwind$loadGlfuncDefault (在 StgSharpC.obj 中) + $unwind$_glfwGetWindowContentScaleWin32 (在 glfw3.lib(win32_window.obj) 中) + $unwind$glfwGetJoystickButtons (在 glfw3.lib(input.obj) 中) + $unwind$glfwGetJoystickHats (在 glfw3.lib(input.obj) 中) + $unwind$_glfwGetPhysicalDevicePresentationSupportWin32 (在 glfw3.lib(win32_window.obj) 中) + $unwind$stbi__get16le (在 stb_image.obj 中) + $unwind$glfwGetJoystickAxes (在 glfw3.lib(input.obj) 中) + $unwind$stbi__get16be (在 stb_image.obj 中) + $unwind$stbi__out_gif_code (在 stb_image.obj 中) + $unwind$stbi__get32be (在 stb_image.obj 中) + $unwind$stbi__get32le (在 stb_image.obj 中) + $unwind$stbi__gif_test_raw (在 stb_image.obj 中) + $unwind$stbi__decode_jpeg_image (在 stb_image.obj 中) + 已选择符号: + $unwind$stbi__check_png_header (在 stb_image.obj 中) + 已替换符号: + $unwind$_glfwInputChar (在 glfw3.lib(input.obj) 中) + $unwind$_DllMainCRTStartup (在 MSVCRT.lib(dll_dllmain.obj) 中) + $unwind$getKeyMods (在 glfw3.lib(win32_window.obj) 中) + $unwind$stbi__pic_is4 (在 stb_image.obj 中) + $unwind$_glfwGetCursorPosWin32 (在 glfw3.lib(win32_window.obj) 中) + $unwind$_glfwSetWindowSizeLimitsNull (在 glfw3.lib(null_window.obj) 中) + $unwind$_glfwSetWindowSizeNull (在 glfw3.lib(null_window.obj) 中) + $unwind$glfwGetPhysicalDevicePresentationSupport (在 glfw3.lib(vulkan.obj) 中) + $unwind$stbi__hdr_convert (在 stb_image.obj 中) + $unwind$_glfwAllocGammaArrays (在 glfw3.lib(monitor.obj) 中) + $unwind$_glfwTerminateJoysticksWin32 (在 glfw3.lib(win32_joystick.obj) 中) + $unwind$_glfwSetWindowAspectRatioNull (在 glfw3.lib(null_window.obj) 中) + 已选择符号: + $unwind$sscanf (在 glfw3.lib(context.obj) 中) + 已替换符号: + $unwind$sprintf (在 glfw3.lib(win32_joystick.obj) 中) + 已选择符号: + $unwind$stbi__zexpand (在 stb_image.obj 中) + 已替换符号: + $unwind$_glfwSetCursorModeWin32 (在 glfw3.lib(win32_window.obj) 中) + $unwind$_glfwGetWindowPosWin32 (在 glfw3.lib(win32_window.obj) 中) + 已选择符号: + $unwind$stbi__getn (在 stb_image.obj 中) + 已替换符号: + $unwind$stbi__pnm_skip_whitespace (在 stb_image.obj 中) + $unwind$stbi__pnm_getinteger (在 stb_image.obj 中) + $unwind$stbi__psd_decode_rle (在 stb_image.obj 中) + 已选择符号: + $unwind$stbi__convert_16_to_8 (在 stb_image.obj 中) + 已替换符号: + $unwind$__scrt_dllmain_exception_filter (在 MSVCRT.lib(utility.obj) 中) + $unwind$_glfwSetWindowMonitorNull (在 glfw3.lib(null_window.obj) 中) + $unwind$helperWindowProc (在 glfw3.lib(win32_init.obj) 中) + $unwind$glfwCreateWindowSurface (在 glfw3.lib(vulkan.obj) 中) + $unwind$_glfwAllocMonitor (在 glfw3.lib(monitor.obj) 中) + $unwind$_glfwCreateWindowNull (在 glfw3.lib(null_window.obj) 中) + 已选择符号: + $unwind$stbi__decode_jpeg_header (在 stb_image.obj 中) + 已替换符号: + $unwind$glfwCreateCursor (在 glfw3.lib(input.obj) 中) + 已选择符号: + $unwind$glfwGetOSMesaColorBuffer (在 glfw3.lib(osmesa_context.obj) 中) + 已替换符号: + $unwind$glfwGetOSMesaDepthBuffer (在 glfw3.lib(osmesa_context.obj) 中) + 已选择符号: + $unwind$stbi__process_scan_header (在 stb_image.obj 中) + 已替换符号: + $unwind$_glfwGetMonitorContentScaleWin32 (在 glfw3.lib(win32_monitor.obj) 中) + 已选择符号: + $unwind$stbi__parse_zlib (在 stb_image.obj 中) + 已替换符号: + $unwind$stbi__readval (在 stb_image.obj 中) + $unwind$_glfwSetWindowIconWin32 (在 glfw3.lib(win32_window.obj) 中) + 已选择符号: + $unwind$createNativeWindow (在 glfw3.lib(win32_window.obj) 中) + 已替换符号: + $unwind$_glfwCreateContextEGL (在 glfw3.lib(egl_context.obj) 中) + 已选择符号: + $chain$1$stbi__hdr_load (在 stb_image.obj 中) + 已替换符号: + $chain$3$stbi__hdr_load (在 stb_image.obj 中) + 已选择符号: + $chain$6$load_jpeg_image (在 stb_image.obj 中) + 已替换符号: + $chain$10$load_jpeg_image (在 stb_image.obj 中) + $chain$12$load_jpeg_image (在 stb_image.obj 中) + 已选择符号: + $chain$1$stbi__gif_header (在 stb_image.obj 中) + 已替换符号: + $chain$3$stbi__gif_header (在 stb_image.obj 中) + 已选择符号: + $chain$1$stbi__zbuild_huffman (在 stb_image.obj 中) + 已替换符号: + $chain$3$stbi__zbuild_huffman (在 stb_image.obj 中) + 已选择符号: + $chain$2$stbi__get_marker (在 stb_image.obj 中) + 已替换符号: + $chain$4$stbi__get_marker (在 stb_image.obj 中) + 已选择符号: + $chain$7$load_jpeg_image (在 stb_image.obj 中) + 已替换符号: + $chain$9$load_jpeg_image (在 stb_image.obj 中) + 已选择符号: + $chain$8$load_jpeg_image (在 stb_image.obj 中) + 已替换符号: + $chain$11$load_jpeg_image (在 stb_image.obj 中) + 已选择符号: + $chain$3$chooseEGLConfig (在 glfw3.lib(egl_context.obj) 中) + 已替换符号: + $chain$5$chooseEGLConfig (在 glfw3.lib(egl_context.obj) 中) + 已选择符号: + $chain$1$glfwCreateWindow (在 glfw3.lib(window.obj) 中) + 已替换符号: + $chain$3$glfwCreateWindow (在 glfw3.lib(window.obj) 中) + 已选择符号: + $chain$3$_glfwAllocJoystick (在 glfw3.lib(input.obj) 中) + 已替换符号: + $chain$5$_glfwAllocJoystick (在 glfw3.lib(input.obj) 中) + 已选择符号: + $chain$2$_glfwSetClipboardStringWin32 (在 glfw3.lib(win32_window.obj) 中) + 已替换符号: + $chain$4$_glfwSetClipboardStringWin32 (在 glfw3.lib(win32_window.obj) 中) + 已选择符号: + $chain$3$_glfwInitEGL (在 glfw3.lib(egl_context.obj) 中) + 已替换符号: + $chain$9$_glfwInitEGL (在 glfw3.lib(egl_context.obj) 中) + $chain$7$_glfwInitEGL (在 glfw3.lib(egl_context.obj) 中) + $chain$5$_glfwInitEGL (在 glfw3.lib(egl_context.obj) 中) + 已选择符号: + $chain$7$glfwExtensionSupported (在 glfw3.lib(context.obj) 中) + 已替换符号: + $chain$9$glfwExtensionSupported (在 glfw3.lib(context.obj) 中) + 已选择符号: + $chain$3$_glfwInitVulkan (在 glfw3.lib(vulkan.obj) 中) + 已替换符号: + $chain$5$_glfwInitVulkan (在 glfw3.lib(vulkan.obj) 中) + 已选择符号: + $pdata$_glfwGetWindowSizeWin32 (在 glfw3.lib(win32_window.obj) 中) + 已替换符号: + $pdata$_glfwGetFramebufferSizeWin32 (在 glfw3.lib(win32_window.obj) 中) + 已选择符号: + $pdata$_glfwSetWindowSizeLimitsNull (在 glfw3.lib(null_window.obj) 中) + 已替换符号: + $pdata$_glfwSetWindowAspectRatioNull (在 glfw3.lib(null_window.obj) 中) + ICF 总节省量: 3048 字节 + 正在启动传递 2 + * CIL library *(* CIL module *) + StgSharp.C.exp + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + gdi32.lib(GDI32.dll) + gdi32.lib(GDI32.dll) + gdi32.lib(GDI32.dll) + gdi32.lib(GDI32.dll) + gdi32.lib(GDI32.dll) + gdi32.lib(GDI32.dll) + gdi32.lib(GDI32.dll) + gdi32.lib(GDI32.dll) + gdi32.lib(GDI32.dll) + gdi32.lib(GDI32.dll) + gdi32.lib(GDI32.dll) + gdi32.lib(GDI32.dll) + gdi32.lib(GDI32.dll) + gdi32.lib(GDI32.dll) + gdi32.lib(GDI32.dll) + shell32.lib(SHELL32.dll) + shell32.lib(SHELL32.dll) + shell32.lib(SHELL32.dll) + shell32.lib(SHELL32.dll) + shell32.lib(SHELL32.dll) + shell32.lib(SHELL32.dll) + glfw3.lib(context.obj) + glfw3.lib(init.obj) + glfw3.lib(input.obj) + glfw3.lib(monitor.obj) + glfw3.lib(platform.obj) + glfw3.lib(vulkan.obj) + glfw3.lib(window.obj) + glfw3.lib(egl_context.obj) + glfw3.lib(osmesa_context.obj) + glfw3.lib(null_init.obj) + glfw3.lib(null_monitor.obj) + glfw3.lib(null_window.obj) + glfw3.lib(null_joystick.obj) + glfw3.lib(win32_module.obj) + glfw3.lib(win32_time.obj) + glfw3.lib(win32_thread.obj) + glfw3.lib(win32_init.obj) + glfw3.lib(win32_joystick.obj) + glfw3.lib(win32_monitor.obj) + glfw3.lib(win32_window.obj) + glfw3.lib(wgl_context.obj) + MSVCRT.lib(argv_mode.obj) + MSVCRT.lib(default_local_stdio_options.obj) + MSVCRT.lib(fltused.obj) + MSVCRT.lib(tncleanup.obj) + MSVCRT.lib(dll_dllmain.obj) + MSVCRT.lib(tlssup.obj) + MSVCRT.lib(initializers.obj) + MSVCRT.lib(utility.obj) + MSVCRT.lib(ucrt_stubs.obj) + MSVCRT.lib(gs_cookie.obj) + MSVCRT.lib(gs_report.obj) + MSVCRT.lib(gs_support.obj) + MSVCRT.lib(guard_support.obj) + MSVCRT.lib(loadcfg.obj) + MSVCRT.lib(dyn_tls_init.obj) + MSVCRT.lib(ucrt_detection.obj) + MSVCRT.lib(cpu_disp.obj) + MSVCRT.lib(utility_desktop.obj) + MSVCRT.lib(initsect.obj) + MSVCRT.lib(gshandler.obj) + MSVCRT.lib(amdsecgs.obj) + MSVCRT.lib(chkstk.obj) + MSVCRT.lib(guard_dispatch.obj) + MSVCRT.lib(guard_xfg_dispatch.obj) + vcruntime.lib(VCRUNTIME140.dll) + vcruntime.lib(VCRUNTIME140.dll) + vcruntime.lib(VCRUNTIME140.dll) + vcruntime.lib(VCRUNTIME140.dll) + vcruntime.lib(VCRUNTIME140.dll) + vcruntime.lib(VCRUNTIME140.dll) + vcruntime.lib(VCRUNTIME140.dll) + vcruntime.lib(VCRUNTIME140.dll) + vcruntime.lib(VCRUNTIME140.dll) + vcruntime.lib(VCRUNTIME140.dll) + vcruntime.lib(VCRUNTIME140.dll) + vcruntime.lib(softmemtag.obj) + ucrt.lib(api-ms-win-crt-utility-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-utility-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-utility-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-convert-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-convert-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-convert-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-convert-l1-1-0.dll) + 已完成传递 2 + StgSharpC.vcxproj -> C:\Users\Youmu\OneDrive - MSFT\大学\毕业设计\GraduationProject\build\StgSharp.C.dll diff --git a/StgSharp.C/x64/Release/StgSharpC.obj b/StgSharp.C/x64/Release/StgSharpC.obj new file mode 100644 index 00000000..06aefe2a Binary files /dev/null and b/StgSharp.C/x64/Release/StgSharpC.obj differ diff --git a/StgSharp.C/x64/Release/dllmain.obj b/StgSharp.C/x64/Release/dllmain.obj new file mode 100644 index 00000000..b4388b00 Binary files /dev/null and b/StgSharp.C/x64/Release/dllmain.obj differ diff --git a/StgSharp.C/x64/Release/hash.obj b/StgSharp.C/x64/Release/hash.obj new file mode 100644 index 00000000..fc921573 Binary files /dev/null and b/StgSharp.C/x64/Release/hash.obj differ diff --git a/StgSharp.C/x64/Release/intrinsic.obj b/StgSharp.C/x64/Release/intrinsic.obj new file mode 100644 index 00000000..ca137483 Binary files /dev/null and b/StgSharp.C/x64/Release/intrinsic.obj differ diff --git a/StgSharp.C/x64/Release/mat2.obj b/StgSharp.C/x64/Release/mat2.obj new file mode 100644 index 00000000..020b666e Binary files /dev/null and b/StgSharp.C/x64/Release/mat2.obj differ diff --git a/StgSharp.C/x64/Release/mat3.obj b/StgSharp.C/x64/Release/mat3.obj new file mode 100644 index 00000000..007c3c9c Binary files /dev/null and b/StgSharp.C/x64/Release/mat3.obj differ diff --git a/StgSharp.C/x64/Release/mat4.obj b/StgSharp.C/x64/Release/mat4.obj new file mode 100644 index 00000000..03f59fb3 Binary files /dev/null and b/StgSharp.C/x64/Release/mat4.obj differ diff --git a/StgSharp.C/x64/Release/stb_image.obj b/StgSharp.C/x64/Release/stb_image.obj new file mode 100644 index 00000000..5c8f0ad8 Binary files /dev/null and b/StgSharp.C/x64/Release/stb_image.obj differ diff --git a/StgSharp.C/x64/Release/string.obj b/StgSharp.C/x64/Release/string.obj new file mode 100644 index 00000000..9cf17f3a Binary files /dev/null and b/StgSharp.C/x64/Release/string.obj differ diff --git a/StgSharp.C/x64/Release/vc143.pdb b/StgSharp.C/x64/Release/vc143.pdb new file mode 100644 index 00000000..59e70c50 Binary files /dev/null and b/StgSharp.C/x64/Release/vc143.pdb differ diff --git a/StgSharp.C/x64/Release/vector.obj b/StgSharp.C/x64/Release/vector.obj new file mode 100644 index 00000000..6f552daf Binary files /dev/null and b/StgSharp.C/x64/Release/vector.obj differ diff --git a/StgSharp.C/x64/Release/vector_dot.obj b/StgSharp.C/x64/Release/vector_dot.obj new file mode 100644 index 00000000..6f0240ce Binary files /dev/null and b/StgSharp.C/x64/Release/vector_dot.obj differ diff --git a/StgSharp.Common/Collections/BidirectionalDictionary.cs b/StgSharp.Common/Collections/BidirectionalDictionary.cs index afc4e508..fd50cb73 100644 --- a/StgSharp.Common/Collections/BidirectionalDictionary.cs +++ b/StgSharp.Common/Collections/BidirectionalDictionary.cs @@ -56,15 +56,16 @@ namespace StgSharp.Commom.Collections if( _reverse.TryGetValue( key, out TFirst value ) ) { return value; } - throw new ArgumentException( - $"Cannot find key {key!.ToString()} in dictionary." ); + throw new ArgumentException( $"Cannot find key {key!.ToString()} in dictionary." ); } set { - if( _reverse.TryGetValue( key, out TFirst origin ) ) { + if( _reverse.TryGetValue( key, out TFirst origin ) ) + { _reverse[ key ] = value; _forward.Remove( origin ); - } else { + } else + { _reverse.Add( key, value ); } _forward.Add( value, key ); @@ -78,15 +79,16 @@ namespace StgSharp.Commom.Collections if( _forward.TryGetValue( key, out TSecond value ) ) { return value; } - throw new ArgumentException( - $"Cannot find key {key!.ToString()} in dictionary." ); + throw new ArgumentException( $"Cannot find key {key!.ToString()} in dictionary." ); } set { - if( _forward.TryGetValue( key, out TSecond origin ) ) { + if( _forward.TryGetValue( key, out TSecond origin ) ) + { _forward[ key ] = value; _reverse.Remove( origin ); - } else { + } else + { _forward.Add( key, value ); } _reverse.Add( value, key ); @@ -109,8 +111,7 @@ namespace StgSharp.Commom.Collections public void Add( KeyValuePair item ) { - if( _forward.ContainsKey( item.Key ) || _reverse.ContainsKey( - item.Value ) ) { + if( _forward.ContainsKey( item.Key ) || _reverse.ContainsKey( item.Value ) ) { throw new ArgumentException( "Duplicate key or value." ); } _forward.Add( item.Key, item.Value ); @@ -134,8 +135,9 @@ namespace StgSharp.Commom.Collections public bool Contains( KeyValuePair item ) { - return _forward.Contains( item ) && _reverse.TryGetValue( - item.Value, out TFirst var ) && var!.Equals( item.Key ); + return _forward.Contains( item ) && + _reverse.TryGetValue( item.Value, out TFirst var ) && + var!.Equals( item.Key ); } public bool Contains( TSecond key ) @@ -148,9 +150,7 @@ namespace StgSharp.Commom.Collections return _forward.ContainsKey( key ); } - public void CopyTo( - KeyValuePair[] array, - int arrayIndex ) + public void CopyTo( KeyValuePair[] array, int arrayIndex ) { if( array == null ) { throw new ArgumentNullException( nameof( array ) ); @@ -159,8 +159,7 @@ namespace StgSharp.Commom.Collections throw new ArgumentOutOfRangeException( nameof( arrayIndex ) ); } if( array.Length - arrayIndex < _forward.Count ) { - throw new ArgumentException( - "The array is too small to copy the elements." ); + throw new ArgumentException( "The array is too small to copy the elements." ); } foreach( KeyValuePair pair in _forward ) { diff --git a/StgSharp.Common/Collections/CapacityFixedList.cs b/StgSharp.Common/Collections/CapacityFixedList.cs index 3fe2e3fa..bfc0a732 100644 --- a/StgSharp.Common/Collections/CapacityFixedList.cs +++ b/StgSharp.Common/Collections/CapacityFixedList.cs @@ -39,13 +39,17 @@ namespace StgSharp.Commom.Collections { public static class CapacityFixedListBuilder { - internal static CapacityFixedList Create(ReadOnlySpan values) + + internal static CapacityFixedList Create( ReadOnlySpan values ) { - return new CapacityFixedList(values); + return new CapacityFixedList( values ); } + } - [CollectionBuilder(typeof(CapacityFixedListBuilder),nameof(CapacityFixedListBuilder.Create))] + [CollectionBuilder( + typeof( CapacityFixedListBuilder ), + nameof( CapacityFixedListBuilder.Create ) )] public class CapacityFixedList : IList { @@ -57,7 +61,7 @@ namespace StgSharp.Commom.Collections _values = new T[size]; } - public CapacityFixedList(ReadOnlySpan values) + public CapacityFixedList( ReadOnlySpan values ) { _values = values.ToArray(); } @@ -65,13 +69,14 @@ namespace StgSharp.Commom.Collections public T this[ int index ] { get => index < _index ? - _values[ index ] : throw new ArgumentOutOfRangeException( - nameof( index ) ); + _values[ index ] : throw new ArgumentOutOfRangeException( nameof( index ) ); set { - if( index < _index ) { + if( index < _index ) + { _values[ index ] = value; - } else { + } else + { throw new ArgumentOutOfRangeException( nameof( index ) ); } } @@ -83,7 +88,8 @@ namespace StgSharp.Commom.Collections public void Add( T item ) { - if( _index < capacity - 1 ) { + if( _index < capacity - 1 ) + { _index++; this[ _index ] = item; } @@ -97,7 +103,8 @@ namespace StgSharp.Commom.Collections public bool Contains( T item ) { - for( int i = 0; i <= _index; i++ ) { + for( int i = 0; i <= _index; i++ ) + { if( item.Equals( _values[ i ] ) ) { return true; } @@ -120,7 +127,8 @@ namespace StgSharp.Commom.Collections public int IndexOf( T item ) { T v; - for( int i = 0; i <= _index; i++ ) { + for( int i = 0; i <= _index; i++ ) + { if( ( v = _values[ i ] ) != null && v.Equals( item ) ) { return i; } @@ -131,8 +139,10 @@ namespace StgSharp.Commom.Collections public bool Remove( T item ) { T v; - for( int i = 0; i <= _index; i++ ) { - if( ( v = _values[ i ] ) != null && v.Equals( item ) ) { + for( int i = 0; i <= _index; i++ ) + { + if( ( v = _values[ i ] ) != null && v.Equals( item ) ) + { _values[ i ] = _values[ _index ]; _index--; return true; @@ -143,8 +153,10 @@ namespace StgSharp.Commom.Collections public void RemoveAll( Predicate predicate ) { - for( int i = _index; i > 0; i-- ) { - if( predicate( _values[ i ] ) ) { + for( int i = _index; i > 0; i-- ) + { + if( predicate( _values[ i ] ) ) + { _values[ i ] = _values[ _index ]; _index--; } @@ -153,7 +165,8 @@ namespace StgSharp.Commom.Collections public void RemoveAt( int index ) { - if( index <= _index ) { + if( index <= _index ) + { _values[ index ] = _values[ _index ]; _index--; } diff --git a/StgSharp.Common/Collections/IBidrirectionalDictionary.cs b/StgSharp.Common/Collections/IBidrirectionalDictionary.cs index fcacda8b..004d5297 100644 --- a/StgSharp.Common/Collections/IBidrirectionalDictionary.cs +++ b/StgSharp.Common/Collections/IBidrirectionalDictionary.cs @@ -38,51 +38,39 @@ namespace StgSharp.Commom.Collections public interface IBidirectionalDictionary : IDictionary { - public TFirst this[ TSecond key ] - { - get; - set; - } + public TFirst this[ TSecond key ] { get; set; } - public ICollection FirstIndex - { - get; - } + public ICollection FirstIndex { get; } - public ICollection SecondIndex - { - get; - } + public ICollection SecondIndex { get; } - public IReadOnlyDictionary Forward - { - get; - } + public IReadOnlyDictionary Forward { get; } - public IReadOnlyDictionary Reverse - { - get; - } + public IReadOnlyDictionary Reverse { get; } /// - /// Determines whether the contains - /// the specified key. + /// Determines whether the + /// contains the specified key. /// - /// The value to locate in the . + /// + /// The value to locate in the . + /// /// - /// true if the contains an element - /// with the specified key; otherwise, false. + /// true if the contains an + /// element with the specified key; otherwise, false. /// public bool Contains( TSecond key ); /// - /// Determines whether the contains - /// the specified key. + /// Determines whether the + /// contains the specified key. /// - /// The value to locate in the . + /// + /// The value to locate in the . + /// /// - /// true if the contains an element - /// with the specified key; otherwise, false. + /// true if the contains an + /// element with the specified key; otherwise, false. /// public bool Contains( TFirst key ); @@ -93,8 +81,7 @@ namespace StgSharp.Commom.Collections ICollection IDictionary.Values => SecondIndex; - bool IDictionary.ContainsKey( TFirst key ) => Contains( - key ); + bool IDictionary.ContainsKey( TFirst key ) => Contains( key ); #pragma warning restore CA1033 } } \ No newline at end of file diff --git a/StgSharp.Common/Collections/IHashMultiplexer.cs b/StgSharp.Common/Collections/IHashMultiplexer.cs index bfc871f5..56ce0004 100644 --- a/StgSharp.Common/Collections/IHashMultiplexer.cs +++ b/StgSharp.Common/Collections/IHashMultiplexer.cs @@ -36,11 +36,7 @@ namespace StgSharp.Collections public interface IHashMultiplexer : IEqualityComparer { - int RemainedMultiplexCount - { - get; - set; - } + int RemainedMultiplexCount { get; set; } void CacheHash( T obj, int count ); diff --git a/StgSharp.Common/Collections/ListSegment.cs b/StgSharp.Common/Collections/ListSegment.cs index 73efea66..fca67ba5 100644 --- a/StgSharp.Common/Collections/ListSegment.cs +++ b/StgSharp.Common/Collections/ListSegment.cs @@ -40,10 +40,12 @@ using System.Xml.Serialization; namespace StgSharp.Collections { /// - /// Part of a collection. This contains a direct reference to _origin collection, so all change - /// to _origin collection will be reflected in this object. + /// Part of a collection. This contains a direct reference to _origin collection, so all + /// change to _origin collection will be reflected in this object. /// - /// + /// + /// + /// public struct ListSegment : ICollection { @@ -56,8 +58,7 @@ namespace StgSharp.Collections ArgumentNullException.ThrowIfNull( collection ); ArgumentOutOfRangeException.ThrowIfLessThan( begin, 0 ); ArgumentOutOfRangeException.ThrowIfLessThan( length, 0 ); - ArgumentOutOfRangeException.ThrowIfLessThan( - begin + length, collection.Count ); + ArgumentOutOfRangeException.ThrowIfLessThan( begin + length, collection.Count ); _collection = collection; _begin = begin; _length = length; @@ -68,12 +69,22 @@ namespace StgSharp.Collections get { ArgumentOutOfRangeException.ThrowIfLessThan( indexValue, 0 ); - ArgumentOutOfRangeException.ThrowIfGreaterThanOrEqual( - indexValue, _length ); + ArgumentOutOfRangeException.ThrowIfGreaterThanOrEqual( indexValue, _length ); return _collection[ indexValue + _begin ]; } } + public T this[ Index i ] + { + get + { + int offset = i.IsFromEnd ? _length - i.Value : i.Value; + ArgumentOutOfRangeException.ThrowIfLessThan( offset, 0 ); + ArgumentOutOfRangeException.ThrowIfGreaterThanOrEqual( offset, _length ); + return _collection[ offset + _begin ]; + } + } + public bool IsReadOnly => true; public int Count => _length; @@ -87,8 +98,7 @@ namespace StgSharp.Collections public void CopyTo( T[] array, int arrayIndex ) { ArgumentNullException.ThrowIfNull( array ); - Span span = CollectionsMarshal.AsSpan( _collection ) - .Slice( _begin, _length ); + Span span = CollectionsMarshal.AsSpan( _collection ).Slice( _begin, _length ); Span target = new Span( array, arrayIndex, _length ); span.CopyTo( target ); } diff --git a/StgSharp.Common/Collections/PartialDictionary.cs b/StgSharp.Common/Collections/PartialDictionary.cs index 71bd9a39..6499321b 100644 --- a/StgSharp.Common/Collections/PartialDictionary.cs +++ b/StgSharp.Common/Collections/PartialDictionary.cs @@ -40,17 +40,17 @@ 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 ) + public PartialDictionary( Dictionary source, TKey[] index ) { _source = source; _keys = new HashSet( index ); - foreach( TKey item in _keys ) { + foreach( TKey item in _keys ) + { if( !_source.ContainsKey( item ) ) { _source.Add( item, default! ); } @@ -58,13 +58,12 @@ namespace StgSharp.Collections _values = new PartialDictionaryValues( this ); } - public PartialDictionary( - Dictionary source, - HashSet keys ) + public PartialDictionary( Dictionary source, HashSet keys ) { _source = source; _keys = keys; - foreach( TKey item in _keys ) { + foreach( TKey item in _keys ) + { if( !_source.ContainsKey( item ) ) { _source.Add( item, default! ); } @@ -73,20 +72,19 @@ namespace StgSharp.Collections } public PartialDictionary( - Dictionary source, - TKey[] index, IHashMultiplexer multiplexer - ) + Dictionary source, + TKey[] index, + IHashMultiplexer multiplexer ) { _source = source; - _keys = new HashSet(index); - foreach (TKey item in _keys) + _keys = new HashSet( index ); + foreach( TKey item in _keys ) { - if (!_source.ContainsKey(item)) - { - _source.Add(item, default!); + if( !_source.ContainsKey( item ) ) { + _source.Add( item, default! ); } } - _values = new PartialDictionaryValues(this); + _values = new PartialDictionaryValues( this ); } public TValue this[ TKey key ] @@ -131,14 +129,14 @@ namespace StgSharp.Collections public IEnumerator> GetEnumerator() { foreach( TKey item in _keys ) { - yield return new KeyValuePair( - item, _source[ item ] ); + yield return new KeyValuePair( item, _source[ item ] ); } } public bool TryGetValue( TKey key, out TValue value ) { - if( _keys.Contains( key ) ) { + if( _keys.Contains( key ) ) + { value = _source[ key ]; return true; } @@ -146,8 +144,7 @@ namespace StgSharp.Collections return false; } - void ICollection>.Add( - KeyValuePair item ) + void ICollection>.Add( KeyValuePair item ) { return; } @@ -157,8 +154,7 @@ namespace StgSharp.Collections throw new NotSupportedException(); } - bool ICollection>.Remove( - KeyValuePair item ) + bool ICollection>.Remove( KeyValuePair item ) { throw new NotSupportedException(); } diff --git a/StgSharp.Common/Collections/PartialDictionaryValues.cs b/StgSharp.Common/Collections/PartialDictionaryValues.cs index b70ced59..322225fb 100644 --- a/StgSharp.Common/Collections/PartialDictionaryValues.cs +++ b/StgSharp.Common/Collections/PartialDictionaryValues.cs @@ -43,8 +43,7 @@ namespace StgSharp.Collections private readonly PartialDictionary _values; - public PartialDictionaryValues( - PartialDictionary value ) + public PartialDictionaryValues( PartialDictionary value ) { _values = value; } @@ -55,7 +54,8 @@ namespace StgSharp.Collections public bool Contains( TValue item ) { - foreach( KeyValuePair kvp in _values ) { + foreach( KeyValuePair kvp in _values ) + { if( kvp.Value != null && kvp.Value.Equals( item ) ) { return true; } @@ -65,7 +65,8 @@ namespace StgSharp.Collections public void CopyTo( TValue[] array, int arrayIndex ) { - foreach( KeyValuePair kvp in _values ) { + foreach( KeyValuePair kvp in _values ) + { array[ arrayIndex ] = kvp.Value; arrayIndex++; } diff --git a/StgSharp.Common/Collections/RandomAccessibleStack.cs b/StgSharp.Common/Collections/RandomAccessibleStack.cs new file mode 100644 index 00000000..b5871c22 --- /dev/null +++ b/StgSharp.Common/Collections/RandomAccessibleStack.cs @@ -0,0 +1,185 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="RandomAccessibleStack.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.Runtime.CompilerServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Collections +{ + public class RandomAccessibleStack : IEnumerable + { + + private const int DefaultCapacity = 4; + + private T[] _array; + private int _size; + private int _version; + + /// + /// Initializes a new instance of the RandomAccessStack class that is empty and has the + /// default initial capacity. + /// + public RandomAccessibleStack() + { + _array = new T[DefaultCapacity]; + } + + /// + /// Initializes a new instance of the RandomAccessStack class that is empty and has the + /// specified initial capacity. + /// + public RandomAccessibleStack( int capacity ) + { + if( capacity < 0 ) { + throw new ArgumentOutOfRangeException( + nameof( capacity ), "Capacity must be non-negative." ); + } + + _array = new T[capacity]; + } + + /// + /// Gets or sets the element at the specified index in the stack (0 = bottom, Count-1 = + /// top). + /// + public T this[ int index ] + { + get + { + if( index < 0 || index >= _size ) { + throw new ArgumentOutOfRangeException( nameof( index ) ); + } + + return _array[ index ]; + } + /* + set + { + if( index < 0 || index >= _size ) { + throw new ArgumentOutOfRangeException( nameof( index ) ); + } + _array[ index ] = value; + _version++; + } + /**/ + } + + /// + /// Gets the number of elements contained in the stack. + /// + public int Count => _size; + + /// + /// Removes all objects from the stack. + /// + public void Clear() + { + Array.Clear( _array, 0, _size ); + _size = 0; + _version++; + } + + /// + /// Returns an enumerator that iterates through the stack from top to bottom. Throws if + /// the stack is modified during iteration. + /// + public IEnumerator GetEnumerator() + { + int expectedVersion = _version; + for( int i = _size - 1; i >= 0; i-- ) + { + if( expectedVersion != _version ) { + throw new InvalidOperationException( + "Collection was modified during enumeration." ); + } + + yield return _array[ i ]; + } + } + + /// + /// Returns the object at the top of the stack without removing it. + /// + public T Peek() + { + if( _size == 0 ) { + throw new InvalidOperationException( "Stack is empty." ); + } + + return _array[ _size - 1 ]; + } + + /// + /// Removes and returns the object at the top of the stack. + /// + public T Pop() + { + if( _size == 0 ) { + throw new InvalidOperationException( "Stack is empty." ); + } + + T item = _array[ --_size ]; + _array[ _size ] = default!; + _version++; + return item; + } + + /// + /// Adds an item to the top of the stack. + /// + public void Push( T item ) + { + if( _size == _array.Length ) { + EnsureCapacity( _size + 1 ); + } + + _array[ _size++ ] = item; + _version++; + } + + private void EnsureCapacity( int min ) + { + int newCapacity = _array.Length == 0 ? DefaultCapacity : _array.Length * 2; + if( newCapacity < min ) { + newCapacity = min; + } + + Array.Resize( ref _array, newCapacity ); + } + + IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); + + } +} diff --git a/StgSharp.Common/Collections/StringHashMultiplexer.cs b/StgSharp.Common/Collections/StringHashMultiplexer.cs index 38bea082..7e263318 100644 --- a/StgSharp.Common/Collections/StringHashMultiplexer.cs +++ b/StgSharp.Common/Collections/StringHashMultiplexer.cs @@ -1,6 +1,6 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- -// file="KeyMultiplexer.cs" +// file="StringHashMultiplexer.cs" // Project: StgSharp // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. @@ -38,7 +38,7 @@ using System.Threading; namespace StgSharp.Collections { - public sealed class StringHashMultiplexer : IHashMultiplexer + public sealed class StringHashMultiplexer : IHashMultiplexer { private int _initCount, _remainedCount, _hashCache, _hashLast; @@ -74,15 +74,15 @@ namespace StgSharp.Collections { int hash; fixed( char* cPtr = obj.AsSpan() ) { - hash = InternalIO.Intrinsic - .city_hash_simplify( cPtr, obj.Length ); + hash = InternalIO.Intrinsic.city_hash_simplify( cPtr, obj.Length ); } return hash; } public int GetHashCode( string obj ) { - if( _remainedCount > 0 && ReferenceEquals( _source, obj ) ) { + if( _remainedCount > 0 && ReferenceEquals( _source, obj ) ) + { _remainedCount--; return _hashCache; } @@ -139,8 +139,7 @@ namespace StgSharp.Collections { int hash; fixed( char* cPtr = obj.AsSpan() ) { - hash = InternalIO.Intrinsic - .city_hash_simplify( cPtr, obj.Length ); + hash = InternalIO.Intrinsic.city_hash_simplify( cPtr, obj.Length ); } return hash; } @@ -152,7 +151,8 @@ namespace StgSharp.Collections private void Dispose( bool disposing ) { - if( !disposedValue ) { + if( !disposedValue ) + { if( disposing ) { _multiplexers.Dispose(); } diff --git a/StgSharp.Common/Controlling/Controls/BattleField.cs b/StgSharp.Common/Controlling/Controls/BattleField.cs index 3f0d2d59..bf325276 100644 --- a/StgSharp.Common/Controlling/Controls/BattleField.cs +++ b/StgSharp.Common/Controlling/Controls/BattleField.cs @@ -51,17 +51,9 @@ namespace StgSharp.Controls get => throw new NotImplementedException(); } - public Rectangle BoundingBox - { - get; - set; - } + public Rectangle BoundingBox { get; set; } - public Vec2 Position - { - get; - set; - } + public Vec2 Position { get; set; } public IEnumerator GetEnumerator() { diff --git a/StgSharp.Common/Controlling/Controls/ButtonGroup.cs b/StgSharp.Common/Controlling/Controls/ButtonGroup.cs index a02a98d8..a8374897 100644 --- a/StgSharp.Common/Controlling/Controls/ButtonGroup.cs +++ b/StgSharp.Common/Controlling/Controls/ButtonGroup.cs @@ -63,22 +63,14 @@ namespace StgSharp.Controls get => throw new NotSupportedException(); } - public Rectangle BoundingBox - { - get; - set; - } + public Rectangle BoundingBox { get; set; } public TriggerButton CurrentButton { get => current; } - public Vec2 Position - { - get; - set; - } + public Vec2 Position { get; set; } protected List AllButton { diff --git a/StgSharp.Common/Controlling/Controls/CharacterIndexImage.cs b/StgSharp.Common/Controlling/Controls/CharacterIndexImage.cs index 326b01b0..888fdbb1 100644 --- a/StgSharp.Common/Controlling/Controls/CharacterIndexImage.cs +++ b/StgSharp.Common/Controlling/Controls/CharacterIndexImage.cs @@ -52,16 +52,15 @@ namespace StgSharp.Controls private PlainGeometryMesh _tittleMesh; public CharacterLineIndexImage( - int length, - char defaultChar, - PlainGeometryMesh tittleMesh, - IEnumerable<(char, PlainGeometryMesh)> indexEnumeration ) + 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 ); + texIndex = indexEnumeration.ToDictionary( item => item.Item1, item => item.Item2 ); } public bool IsEntity @@ -93,8 +92,8 @@ namespace StgSharp.Controls } string result = ( message.Length >= length ) ? - message.Substring( message.Length - displayIndex.Length ) : message.PadLeft( - length, defaultChar ); + message.Substring( message.Length - displayIndex.Length ) : message.PadLeft( + length, defaultChar ); displayIndex = result.ToCharArray(); } diff --git a/StgSharp.Common/Controlling/Controls/ControllingIntem.cs b/StgSharp.Common/Controlling/Controls/ControllingIntem.cs index 32c7b151..ae6b8a24 100644 --- a/StgSharp.Common/Controlling/Controls/ControllingIntem.cs +++ b/StgSharp.Common/Controlling/Controls/ControllingIntem.cs @@ -42,27 +42,13 @@ namespace StgSharp.Controls public interface ControllingItem : IEnumerable { - public abstract bool IsEntity - { - get; - } + public abstract bool IsEntity { get; } - public abstract ReadOnlySpan TextureBox - { - get; - } + public abstract ReadOnlySpan TextureBox { get; } - public abstract Rectangle BoundingBox - { - get; - set; - } + public abstract Rectangle BoundingBox { get; set; } - public abstract Vec2 Position - { - get; - set; - } + public abstract Vec2 Position { get; set; } IEnumerator IEnumerable.GetEnumerator() { diff --git a/StgSharp.Common/Controlling/Controls/DecorationBox.cs b/StgSharp.Common/Controlling/Controls/DecorationBox.cs index b9c906d2..fc62ff2c 100644 --- a/StgSharp.Common/Controlling/Controls/DecorationBox.cs +++ b/StgSharp.Common/Controlling/Controls/DecorationBox.cs @@ -57,17 +57,9 @@ namespace StgSharp.Controls get => renderMesh.TextureCoord; } - public Rectangle BoundingBox - { - get; - set; - } + public Rectangle BoundingBox { get; set; } - public Vec2 Position - { - get; - set; - } + public Vec2 Position { get; set; } public IEnumerator GetEnumerator() { diff --git a/StgSharp.Common/Controlling/Controls/MarkingLable.cs b/StgSharp.Common/Controlling/Controls/MarkingLable.cs index b334e9e3..e8fdeef3 100644 --- a/StgSharp.Common/Controlling/Controls/MarkingLable.cs +++ b/StgSharp.Common/Controlling/Controls/MarkingLable.cs @@ -63,17 +63,9 @@ namespace StgSharp.Controls get => marker.TextureCoord; } - public Rectangle BoundingBox - { - get; - set; - } + public Rectangle BoundingBox { get; set; } - public Vec2 Position - { - get; - set; - } + public Vec2 Position { get; set; } public IEnumerator GetEnumerator() { diff --git a/StgSharp.Common/Controlling/Controls/TriggerButton.cs b/StgSharp.Common/Controlling/Controls/TriggerButton.cs index b135005f..85e8c6db 100644 --- a/StgSharp.Common/Controlling/Controls/TriggerButton.cs +++ b/StgSharp.Common/Controlling/Controls/TriggerButton.cs @@ -41,9 +41,9 @@ using System.Text; namespace StgSharp.Controls { public delegate void RenderButtonTextureCallback( - ButtonStatus status, - float beginTime, - in TextureProvider texture ); + ButtonStatus status, + float beginTime, + in TextureProvider texture ); public enum ButtonStatus { @@ -106,9 +106,11 @@ namespace StgSharp.Controls { add { - if( _renderButton == null ) { + if( _renderButton == null ) + { _renderButton = value; - } else { + } else + { _renderButton += value; } } @@ -120,17 +122,9 @@ namespace StgSharp.Controls } } - public bool IsHighLighted - { - get; - internal set; - } + public bool IsHighLighted { get; internal set; } - public bool IsDisabled - { - get; - internal set; - } + public bool IsDisabled { get; internal set; } public bool IsEntity => true; @@ -139,41 +133,17 @@ namespace StgSharp.Controls get => MemoryMarshal.Cast( _texture.TextureCoordinate ); } - public Rectangle BoundingBox - { - get; - set; - } + public Rectangle BoundingBox { get; set; } - public TriggerButton Left - { - get; - internal set; - } + public TriggerButton Left { get; internal set; } - public TriggerButton Right - { - get; - internal set; - } + public TriggerButton Right { get; internal set; } - public TriggerButton Up - { - get; - internal set; - } + public TriggerButton Up { get; internal set; } - public TriggerButton Down - { - get; - internal set; - } + public TriggerButton Down { get; internal set; } - public Vec2 Position - { - get; - set; - } + public Vec2 Position { get; set; } internal TextureProvider Texture { @@ -181,11 +151,7 @@ namespace StgSharp.Controls set => _texture = value; } - protected ButtonStatus CurrentStatus - { - get; - set; - } + protected ButtonStatus CurrentStatus { get; set; } public void DeHighlight() { @@ -209,9 +175,11 @@ namespace StgSharp.Controls public void Enable() { - if( CurrentStatus == ButtonStatus.Disable ) { + if( CurrentStatus == ButtonStatus.Disable ) + { CurrentStatus = ButtonStatus.DisableToEnable; - } else { + } else + { return; } if( enableCallback != null ) { @@ -227,9 +195,11 @@ namespace StgSharp.Controls public void Highlight() { - if( CurrentStatus == ButtonStatus.Enable ) { + if( CurrentStatus == ButtonStatus.Enable ) + { CurrentStatus |= ButtonStatus.EnableToHighlight; - } else { + } else + { return; } if( confirmCallback != null ) { diff --git a/StgSharp.Common/Controlling/KeyEnum.cs b/StgSharp.Common/Controlling/KeyEnum.cs index 24f75d92..e76d1930 100644 --- a/StgSharp.Common/Controlling/KeyEnum.cs +++ b/StgSharp.Common/Controlling/KeyEnum.cs @@ -215,9 +215,9 @@ namespace StgSharp } - #pragma warning restore CA1707 - #pragma warning restore CA1712 - #pragma warning restore CA7008 + #pragma warning restore CA1707 + #pragma warning restore CA1712 + #pragma warning restore CA7008 internal enum InputEquipment { diff --git a/StgSharp.Common/Controlling/UsrActivity/IClickTrigger.cs b/StgSharp.Common/Controlling/UsrActivity/IClickTrigger.cs index 327b8a32..2986cf74 100644 --- a/StgSharp.Common/Controlling/UsrActivity/IClickTrigger.cs +++ b/StgSharp.Common/Controlling/UsrActivity/IClickTrigger.cs @@ -37,15 +37,9 @@ namespace StgSharp.Controlling.UsrActivity public interface IClickTrigger { - public int TargetKeyOrButtonID - { - get; - } + public int TargetKeyOrButtonID { get; } - public KeyStatus TriggeredStatus - { - get; - } + public KeyStatus TriggeredStatus { get; } } } diff --git a/StgSharp.Common/Controlling/UsrActivity/JoystickTrigger.cs b/StgSharp.Common/Controlling/UsrActivity/JoystickTrigger.cs index a8d76f10..777f23ba 100644 --- a/StgSharp.Common/Controlling/UsrActivity/JoystickTrigger.cs +++ b/StgSharp.Common/Controlling/UsrActivity/JoystickTrigger.cs @@ -70,16 +70,12 @@ namespace StgSharp.Controlling.UsrActivity return $"Key {_stick} triggered when {_status}"; } - public static bool operator !=( - JoystickTrigger left, - JoystickTrigger right ) + public static bool operator !=( JoystickTrigger left, JoystickTrigger right ) { return !( left == right ); } - public static bool operator ==( - JoystickTrigger left, - JoystickTrigger right ) + public static bool operator ==( JoystickTrigger left, JoystickTrigger right ) { return ( left._status == right._status ) && ( left._stick == right._stick ); } diff --git a/StgSharp.Common/Controlling/UsrActivity/KeyTrigger.cs b/StgSharp.Common/Controlling/UsrActivity/KeyTrigger.cs index 3988d883..bb7bc5d7 100644 --- a/StgSharp.Common/Controlling/UsrActivity/KeyTrigger.cs +++ b/StgSharp.Common/Controlling/UsrActivity/KeyTrigger.cs @@ -73,7 +73,8 @@ namespace StgSharp.Controlling.UsrActivity public static bool operator ==( KeyTrigger left, KeyTrigger right ) { - return ( left._triggerStat == right._triggerStat ) && ( left._targetKey == right._targetKey ); + return ( left._triggerStat == right._triggerStat ) && + ( left._targetKey == right._targetKey ); } bool IEquatable.Equals( KeyTrigger other ) diff --git a/StgSharp.Common/Controlling/UsrActivity/TriggetFactory.cs b/StgSharp.Common/Controlling/UsrActivity/TriggetFactory.cs index fc377378..6c130869 100644 --- a/StgSharp.Common/Controlling/UsrActivity/TriggetFactory.cs +++ b/StgSharp.Common/Controlling/UsrActivity/TriggetFactory.cs @@ -49,42 +49,31 @@ namespace StgSharp.Controlling.UsrActivity private static KeyTrigger keyboardtemp; private static MouseTrigger mousetemp; - public static JoystickTrigger BuildJoystickClickTrigger( - int keyCode, - KeyStatus status ) + 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." ); + throw new InvalidOperationException( "Known key code or key is not on joystick." ); } - public static KeyTrigger BuildKeyboardClickTrigger( - int keyCode, - KeyStatus status ) + 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." ); + throw new InvalidOperationException( "Known key code or kay is not on keyboard." ); } - public static MouseTrigger BuildMouseClickTrigger( - int keyCode, - KeyStatus status ) + 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." ); + throw new InvalidOperationException( "Known key code or key is not on mouse." ); } - public static IClickTrigger BuildTrigger( - int keyCode, - KeyStatus status ) + public static IClickTrigger BuildTrigger( int keyCode, KeyStatus status ) { if( keyCode > KeyboardMin && keyCode < KeyboardMax ) { return new KeyTrigger( ( KeyboardKey )keyCode, status ); diff --git a/StgSharp.Common/Data/GlobalData/root.cs b/StgSharp.Common/Data/GlobalData/root.cs index 1b2b9795..a68410c8 100644 --- a/StgSharp.Common/Data/GlobalData/root.cs +++ b/StgSharp.Common/Data/GlobalData/root.cs @@ -38,7 +38,7 @@ using System.Threading.Tasks; namespace StgSharp { - public static unsafe partial class StgSharp + public static unsafe partial class World { private static byte leastUnusedArea; diff --git a/StgSharp.Common/Data/SSD/Area.cs b/StgSharp.Common/Data/SSD/Area.cs index 0a3a8a36..434695dc 100644 --- a/StgSharp.Common/Data/SSD/Area.cs +++ b/StgSharp.Common/Data/SSD/Area.cs @@ -39,9 +39,9 @@ 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. + /// 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 index 14ecb48f..498db9e1 100644 --- a/StgSharp.Common/Data/SSD/DataHead.cs +++ b/StgSharp.Common/Data/SSD/DataHead.cs @@ -66,7 +66,8 @@ namespace StgSharp.Internal public unsafe byte[] GetBytes() { byte[] ret = new byte[16]; - fixed( M128* vptr = &data ) { + fixed( M128* vptr = &data ) + { byte* bptr = ( byte* )vptr; for( int i = 0; i < 15; i++ ) { ret[ i ] = *bptr; diff --git a/StgSharp.Common/Data/SSD/DataSegment.cs b/StgSharp.Common/Data/SSD/DataSegment.cs index 52d62561..b4c14367 100644 --- a/StgSharp.Common/Data/SSD/DataSegment.cs +++ b/StgSharp.Common/Data/SSD/DataSegment.cs @@ -44,12 +44,11 @@ using System.Threading.Tasks; namespace StgSharp.Internal { - [StructLayout( LayoutKind.Explicit, Size = StgSharp.ssdSegmentLength * 16 )] + [StructLayout( LayoutKind.Explicit, Size = World.ssdSegmentLength * 16 )] public unsafe struct SSDSegment : IComparable, IComparable { - [FieldOffset( 16 )] public fixed byte Data[ - 16 * ( StgSharp.ssdSegmentLength - 1 ) ]; + [FieldOffset( 16 )] public fixed byte Data[ 16 * ( World.ssdSegmentLength - 1 ) ]; [FieldOffset( 12 )] public int DataHash; [FieldOffset( 8 )] public int PreviousHash; [FieldOffset( 0 * 16 )] public SSDSegmentHead Head; @@ -63,7 +62,7 @@ namespace StgSharp.Internal { get { - if( index > ( 16 * ( StgSharp.ssdSegmentLength - 1 ) ) - 1 ) { + if( index > ( 16 * ( World.ssdSegmentLength - 1 ) ) - 1 ) { throw new IndexOutOfRangeException(); } return Data[ index ]; @@ -71,7 +70,7 @@ namespace StgSharp.Internal set { - if( index > ( 16 * ( StgSharp.ssdSegmentLength - 1 ) ) - 1 ) { + if( index > ( 16 * ( World.ssdSegmentLength - 1 ) ) - 1 ) { throw new IndexOutOfRangeException(); } Data[ index ] = value; @@ -98,15 +97,15 @@ namespace StgSharp.Internal public static SSDSegment FromStream( byte[] stream ) { - if( stream.Length != 16 * StgSharp.ssdSegmentLength ) { + if( stream.Length != 16 * World.ssdSegmentLength ) { throw new ArgumentException(); } SSDSegment ret = new SSDSegment(); - fixed( byte* bptr = stream ) { + 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 ) ) ); + for( int i = 1; i < World.ssdSegmentLength; i++ ) { + ret.WriteData( i - 1, *( M128* )( bptr + ( 16 * i ) ) ); } } return ret; @@ -114,9 +113,11 @@ namespace StgSharp.Internal public byte[] GetBytes() { - byte[] ret = new byte[16 * StgSharp.ssdSegmentLength]; - fixed( M128* mptr = &Head.data ) { - fixed( byte* aptr = ret ) { + byte[] ret = new byte[16 * World.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++ ) { @@ -131,9 +132,10 @@ namespace StgSharp.Internal public int GetDataHash() { Vector4 v = Vector4.One; - fixed( M128* mptr = &Head.data ) { + fixed( M128* mptr = &Head.data ) + { Vector4* vptr = ( Vector4* )mptr; - for( int i = 0; i < StgSharp.ssdSegmentLength - 1; i += 1 ) { + for( int i = 0; i < World.ssdSegmentLength - 1; i += 1 ) { v += ( *vptr ) * 31; } } @@ -145,9 +147,10 @@ namespace StgSharp.Internal public override int GetHashCode() { int ret = 17; - fixed( M128* mptr = &Head.data ) { + fixed( M128* mptr = &Head.data ) + { Vector4* vptr = ( Vector4* )mptr; - for( int i = 0; i < StgSharp.ssdSegmentLength; i++ ) { + for( int i = 0; i < World.ssdSegmentLength; i++ ) { ret = ( ret + ( *vptr ).GetHashCode() ) * 31; } } @@ -156,7 +159,8 @@ namespace StgSharp.Internal public unsafe T ReadData( int index ) where T: struct { - fixed( byte* bptr = Data ) { + fixed( byte* bptr = Data ) + { T* tptr = ( T* )bptr; return *( tptr + index ); } @@ -164,7 +168,8 @@ namespace StgSharp.Internal public unsafe void WriteData( int index, T value ) where T: struct { - fixed( byte* bptr = Data ) { + fixed( byte* bptr = Data ) + { T* tptr = ( T* )bptr; *( tptr + index ) = value; } diff --git a/StgSharp.Common/Data/SSD/SSD.cs b/StgSharp.Common/Data/SSD/SSD.cs index ce6a5ca4..27da3035 100644 --- a/StgSharp.Common/Data/SSD/SSD.cs +++ b/StgSharp.Common/Data/SSD/SSD.cs @@ -58,8 +58,7 @@ namespace StgSharp.Internal public static SSD FromFile( string fileRoute ) { - return new SSD( - new FileStream( fileRoute, FileMode.Open, FileAccess.Read ) ) + return new SSD( new FileStream( fileRoute, FileMode.Open, FileAccess.Read ) ) { }; } diff --git a/StgSharp.Common/Data/SSD/SSDraw.cs b/StgSharp.Common/Data/SSD/SSDraw.cs index 409d9b05..88628c39 100644 --- a/StgSharp.Common/Data/SSD/SSDraw.cs +++ b/StgSharp.Common/Data/SSD/SSDraw.cs @@ -60,17 +60,9 @@ namespace StgSharp.Internal.FileIO streamSource.Read( data.AsSpan() ); } - public SSDrawHead Head - { - get; - set; - } + public SSDrawHead Head { get; set; } - public string Name - { - get; - set; - } + public string Name { get; set; } } diff --git a/StgSharp.Common/Data/Serialize/Define.cs b/StgSharp.Common/Data/Serialize/Define.cs index dce0b6d3..721f8766 100644 --- a/StgSharp.Common/Data/Serialize/Define.cs +++ b/StgSharp.Common/Data/Serialize/Define.cs @@ -35,7 +35,7 @@ using System.Text; namespace StgSharp.Internal { /// - /// A class contains a sets of methods to serialize several types + /// 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 index 1067586e..23ea07f0 100644 --- a/StgSharp.Common/Data/Serialize/ISSDSerializable.cs +++ b/StgSharp.Common/Data/Serialize/ISSDSerializable.cs @@ -39,10 +39,7 @@ namespace StgSharp.Internal public interface ISSDSerializable { - public SerializableTypeCode SSDTypeCode - { - get; - } + public SerializableTypeCode SSDTypeCode { get; } public byte[] GetBytes(); @@ -68,8 +65,7 @@ namespace StgSharp.Internal public static partial class Serializer { - public static T Deserialize( byte[] stream ) - where T: ISSDSerializable + public static T Deserialize( byte[] stream ) where T: ISSDSerializable { T serializableObject = Activator.CreateInstance(); serializableObject.FromBytes( stream ); @@ -78,7 +74,8 @@ namespace StgSharp.Internal public static string GetNameTail( SerializableTypeCode typeCode ) { - switch( typeCode ) { + switch( typeCode ) + { case SerializableTypeCode.IndexTable: return "_idt"; case SerializableTypeCode.PixelImage: diff --git a/StgSharp.Common/Data/ValueBox.cs b/StgSharp.Common/Data/ValueBox.cs index 9bf6bd74..7d3d1391 100644 --- a/StgSharp.Common/Data/ValueBox.cs +++ b/StgSharp.Common/Data/ValueBox.cs @@ -41,13 +41,9 @@ namespace StgSharp.Data public interface IValueBox { - ref object ValueReference - { - get; - } + ref object ValueReference { get; } - static virtual IValueBox AsGeneric( IValueBox box ) - where T: struct + static virtual IValueBox AsGeneric( IValueBox box ) where T: struct { if( box is not IValueBox genericBox ) { return null; @@ -65,19 +61,17 @@ namespace StgSharp.Data public interface IValueBox where T: struct { - T Value - { - get; - set; - } + T Value { get; set; } } /// - /// A class attempt to reduce cost of boxing, though still a bit slower than direct access to - /// _origin value type instance. + /// A class attempt to reduce cost of boxing, though still a bit slower than direct access to + /// _origin value type instance. /// - /// Type of instance to be boxed. + /// + /// Type of instance to be boxed. + /// public class ValueBox : IValueBox, IValueBox where T: struct { @@ -88,8 +82,7 @@ namespace StgSharp.Data _value = value; } - public ref object ValueReference => ref Unsafe.As( - ref _value ); + public ref object ValueReference => ref Unsafe.As( ref _value ); public T Value { diff --git a/StgSharp.Common/Entities/Enemy.cs b/StgSharp.Common/Entities/Enemy.cs index 6b5a48cc..72c888e6 100644 --- a/StgSharp.Common/Entities/Enemy.cs +++ b/StgSharp.Common/Entities/Enemy.cs @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - namespace StgSharp.Entities { public class Enemy : IEntity @@ -39,23 +38,11 @@ namespace StgSharp.Entities internal Launcher _dieBulletLauncher; public bool _selectalbe; - public Launcher AwardLauncher - { - get; - set; - } + public Launcher AwardLauncher { get; set; } - public Launcher CommonBulletLauncher - { - get; - set; - } + public Launcher CommonBulletLauncher { get; set; } - public Launcher DieBulletLauncher - { - get; - set; - } + public Launcher DieBulletLauncher { get; set; } public override void OnRenderFrame() { diff --git a/StgSharp.Common/Entities/IEntity.cs b/StgSharp.Common/Entities/IEntity.cs index 9ed41485..287b8cc1 100644 --- a/StgSharp.Common/Entities/IEntity.cs +++ b/StgSharp.Common/Entities/IEntity.cs @@ -42,29 +42,21 @@ namespace StgSharp protected uint _bornTick; internal Func _movHandler; internal LinkedList _collisionBox; + internal PlainGeometryCollisionSensor _collisionSensor; internal Point _basePoint; internal Point _pos; internal Point _position; - internal PlainGeometryCollisionSensor _collisionSensor; internal string _texture; /// - /// X position of an enenmy entity + /// X position of an enenmy entity /// - public float X - { - get; - set; - } + public float X { get; set; } /// - /// Y position of an enemy entity + /// Y position of an enemy entity /// - public float Y - { - get; - set; - } + public float Y { get; set; } public LinkedList CollisionBox { @@ -73,7 +65,7 @@ namespace StgSharp } /// - /// A sensor used for checking out if a bullet hit a player or something else + /// A sensor used for checking out if a bullet hit a player or something else /// public PlainGeometryCollisionSensor CollisionSensor { @@ -81,20 +73,13 @@ namespace StgSharp set => _collisionSensor = value; } - public string TextureGL - { - get; - set; - } + public string TextureGL { get; set; } /// - /// A 2D vector presenting the position of an enemy entity, position can also be visited by - /// X, Y + /// A 2D vector presenting the position of an enemy entity, position can also be visited + /// by X, Y /// - public Vec2 Location - { - get; - } + public Vec2 Location { get; } public abstract void OnRenderFrame(); diff --git a/StgSharp.Common/Environment/Dialogue.cs b/StgSharp.Common/Environment/Dialogue.cs index 172060cd..2f713741 100644 --- a/StgSharp.Common/Environment/Dialogue.cs +++ b/StgSharp.Common/Environment/Dialogue.cs @@ -46,59 +46,45 @@ namespace StgSharp private static Process? _dialogueProcess; private static AnonymousPipeServerStream _dialogueClientPipe,_dialogueServerPipe; - private static ConcurrentBag msgCache = new ConcurrentBag( - ); + 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 + public static bool NeedShowWhenStartup { get; set; } + + public static void PostError( Exception ex ) { - get; - set; + CreateDialogueProcessIfNotExist(); + + _dw.WriteLine( $"posterror {ex.Message}" ); + + _dialogueProcess!.Exited -= DialogueProcessExitCallback; } - public static void SetReadAndWriteThread(Thread thread) + 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)) - { - - } + if( !File.Exists( _dialogueProcessInfo.FileName ) ) { } _dialogueProcess = Process.Start( _dialogueProcessInfo ); - _dr = new StreamReader(_dialogueClientPipe); - _dw = new StreamWriter(_dialogueServerPipe); + _dr = new StreamReader( _dialogueClientPipe ); + _dw = new StreamWriter( _dialogueServerPipe ); - _dialogueProcess!.Exited += DialogueProcessExitCallback; + _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( @@ -106,21 +92,25 @@ namespace StgSharp _dialogueClientPipe = new AnonymousPipeServerStream( PipeDirection.In, HandleInheritability.Inheritable ); - string route = Assembly.GetAssembly( typeof( StgSharp ) ).Location; + string route = Assembly.GetAssembly( typeof( World ) ).Location; string path = Path.GetDirectoryName( route ); string exeName; - if( RuntimeInformation.IsOSPlatform( OSPlatform.Windows ) ) { + if( RuntimeInformation.IsOSPlatform( OSPlatform.Windows ) ) + { exeName = ".exe"; - } else if( RuntimeInformation.IsOSPlatform( OSPlatform.Linux ) || RuntimeInformation.IsOSPlatform( - OSPlatform.OSX ) ) { + } else if( RuntimeInformation.IsOSPlatform( OSPlatform.Linux ) || + RuntimeInformation.IsOSPlatform( OSPlatform.OSX ) ) + { exeName = string.Empty; - } else { + } else + { throw new PlatformNotSupportedException( "Unknown OS platform" ); } - string consoleRoute = Path.Combine(path, @"StgSharpTerminalDialogue", $@"StgSharpTerminalDialogue{exeName}"); + string consoleRoute = Path.Combine( + path, @"StgSharpTerminalDialogue", $@"StgSharpTerminalDialogue{exeName}" ); _dialogueProcessInfo = new ProcessStartInfo { @@ -129,26 +119,13 @@ namespace StgSharp UseShellExecute = true, RedirectStandardOutput = false, }; - } - internal static void PostMessage( - string instruction, - params string[] operands) + 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; + _dw.WriteLine( $"{instruction} {operands}" ); } internal static void UnloadDialogue() @@ -169,10 +146,12 @@ namespace StgSharp } string temp = string .Empty; - do { + do + { temp = _dr.ReadLine(); temp = temp ?? string.Empty; - if( !temp!.StartsWith( target ) ) { + if( !temp!.StartsWith( target ) ) + { break; } } while (true); @@ -181,5 +160,20 @@ namespace StgSharp return index != -1 ? temp.Substring( index + 1 ) : string.Empty; } + private static void AssertThread() + { + if( _readAndWriteThreadId != Environment.CurrentManagedThreadId ) { + throw new InvalidOperationException( + "Communication with dialogue can only call from certain thread." ); + } + } + + private static void DialogueProcessExitCallback( object? sender, EventArgs e ) + { + _dialogueProcess = null; + _dr.Close(); + _dw.Close(); + } + } } diff --git a/StgSharp.Common/Environment/GlobalSetting.cs b/StgSharp.Common/Environment/GlobalSetting.cs index 205e9638..850fca9f 100644 --- a/StgSharp.Common/Environment/GlobalSetting.cs +++ b/StgSharp.Common/Environment/GlobalSetting.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="GlobalSetting.cs" -// Project: StgSharp +// Project: World // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -39,7 +39,7 @@ using System.Threading.Tasks; namespace StgSharp { - public static unsafe partial class StgSharp + public static unsafe partial class World { internal const int ssdSegmentLength = 16; @@ -74,7 +74,7 @@ namespace StgSharp /// /// CustomizeInit an instance of OpenGL program, This method should be called before any - /// other StgSharp api. + /// other World api. /// public static void InitGL( int majorVersion, int minorVersion ) { diff --git a/StgSharp.Common/Environment/Monitors.cs b/StgSharp.Common/Environment/Monitors.cs index 753ed36b..2757919f 100644 --- a/StgSharp.Common/Environment/Monitors.cs +++ b/StgSharp.Common/Environment/Monitors.cs @@ -39,7 +39,7 @@ using System.Threading.Tasks; namespace StgSharp { - public static partial class StgSharp + public static partial class World { private static unsafe IntPtr[] monitorsArray; @@ -48,12 +48,12 @@ namespace StgSharp { get { - if( monitorsArray == null ) { + if( monitorsArray == null ) + { int count = 0; IntPtr* arrayhandle = InternalIO.glfwGetMonitors( &count ); monitorsArray = new IntPtr[count]; - Marshal.Copy( - ( IntPtr )arrayhandle, monitorsArray, 0, count ); + Marshal.Copy( ( IntPtr )arrayhandle, monitorsArray, 0, count ); Marshal.FreeHGlobal( ( IntPtr )arrayhandle ); } return monitorsArray; diff --git a/StgSharp.Common/Environment/Platform.cs b/StgSharp.Common/Environment/Platform.cs index eaf43f71..a107360d 100644 --- a/StgSharp.Common/Environment/Platform.cs +++ b/StgSharp.Common/Environment/Platform.cs @@ -28,11 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- -// using StgSharp.Envitronment; -// using StgSharp.Envitronment.Win32; -// using StgSharp.Graphics; -// using StgSharp.Math; - using StgSharp.Internal; using StgSharp.Internal.Intrinsic; @@ -71,12 +66,12 @@ namespace StgSharp } - public static partial class StgSharp + public static partial class World { /// - /// Version of current StgSharp platform. Main version represent in hundred's digit, and sub - /// version represent in ten's digit. + /// Version of current World platform. Main version represent in hundred's digit, and sub + /// version represent in ten's digit. /// public const long version = 430; @@ -92,8 +87,7 @@ namespace StgSharp InternalIO.glfwInit(); InternalIO.InternalAppendLog( "\n\n\n" ); InternalIO.InternalWriteLog( - $"Program {Assembly.GetEntryAssembly()!.FullName} Started.", - LogType.Info ); + $"Program {Assembly.GetEntryAssembly()!.FullName} Started.", LogType.Info ); _mainThreadID = Environment.CurrentManagedThreadId; @@ -122,8 +116,7 @@ namespace StgSharp public static void LogWarning( Exception notVerySeriesException ) { - InternalIO.InternalWriteLog( - notVerySeriesException.Message, LogType.Warning ); + InternalIO.InternalWriteLog( notVerySeriesException.Message, LogType.Warning ); } public static void Mark( bool needConsole ) @@ -142,12 +135,12 @@ namespace StgSharp } public static void Track( - object target, - string message, - bool isConsole, - [CallerFilePath] string filePath = "", - [CallerMemberName] string callerName = "", - [CallerLineNumber] int lineNumber = 0 ) + 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"; @@ -159,18 +152,24 @@ namespace StgSharp } log += $"Tracking at:\n{filePath}\t{callerName}\tline {lineNumber}\n"; log += $"Additional information:\n{message}\n"; - if( isConsole ) { + if( isConsole ) + { Console.WriteLine( log ); - } else { + } else + { InternalIO.InternalWriteLog( log, LogType.Info ); } } /// - /// Write a log message to log file, and mark the _level of this message. + /// 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. + /// + /// 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 ) { @@ -183,10 +182,12 @@ namespace StgSharp throw new InvalidCastException( "Failed to convert api, the function pointer is zero." ); } - try { + try + { return Marshal.GetDelegateForFunctionPointer( funcPtr ); } - catch( Exception ) { + catch( Exception ) + { throw; } } @@ -197,10 +198,12 @@ namespace StgSharp throw new InvalidCastException( "Failed to convert api, the function pointer is zero." ); } - try { + try + { return Marshal.GetDelegateForFunctionPointer( funcPtr, T ); } - catch( Exception ) { + catch( Exception ) + { throw; } } diff --git a/StgSharp.Common/Environment/globalKeyStat.cs b/StgSharp.Common/Environment/globalKeyStat.cs index afddb8ab..0c60f833 100644 --- a/StgSharp.Common/Environment/globalKeyStat.cs +++ b/StgSharp.Common/Environment/globalKeyStat.cs @@ -37,7 +37,7 @@ using System.Threading.Tasks; namespace StgSharp { - public static partial class StgSharp + public static partial class World { private static ConcurrentDictionary keyListener diff --git a/StgSharp.Common/Geometries/Coordination/PlainCoordinate.cs b/StgSharp.Common/Geometries/Coordination/PlainCoordinate.cs index e8624a1e..99914c84 100644 --- a/StgSharp.Common/Geometries/Coordination/PlainCoordinate.cs +++ b/StgSharp.Common/Geometries/Coordination/PlainCoordinate.cs @@ -41,22 +41,16 @@ namespace StgSharp.Geometries { private static PlainCoordinate statndardPlainCoordination = new PlainCoordinate( - null, new Point( 0, 0, 0 ), new Vec3( 1, 0, 0 ), - new Vec3( 0, 1, 0 ) ); + 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 ) + 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 ); + CoordMat.colum2 = new Vec4( Linear.Normalize( Vec3.Cross( xAxis, yAxis ) ), 0 ); LocalOrigin = origin; } diff --git a/StgSharp.Common/Geometries/Coordination/SpaceCoordinate.cs b/StgSharp.Common/Geometries/Coordination/SpaceCoordinate.cs index 4e83172d..2385e56b 100644 --- a/StgSharp.Common/Geometries/Coordination/SpaceCoordinate.cs +++ b/StgSharp.Common/Geometries/Coordination/SpaceCoordinate.cs @@ -40,11 +40,11 @@ namespace StgSharp.Geometries { public SpaceCoordinate( - CoordinationBase localCoordination, - Point origin, - Vec3 xAxis, - Vec3 yAxis, - Vec3 zAxis ) + CoordinationBase localCoordination, + Point origin, + Vec3 xAxis, + Vec3 yAxis, + Vec3 zAxis ) : base( localCoordination ) { } } diff --git a/StgSharp.Common/Geometries/GemoryException.cs b/StgSharp.Common/Geometries/GemoryException.cs index 1189a134..3cf4b2a1 100644 --- a/StgSharp.Common/Geometries/GemoryException.cs +++ b/StgSharp.Common/Geometries/GemoryException.cs @@ -36,31 +36,25 @@ namespace StgSharp.Geometries public unsafe class ToUpperDimensionException : Exception { - protected ToUpperDimensionException( - SerializationInfo info, - StreamingContext context ) + protected ToUpperDimensionException( SerializationInfo info, StreamingContext context ) : base( info, context ) { } public ToUpperDimensionException() { } public ToUpperDimensionException( string message ) : base( message ) { } - public ToUpperDimensionException( - string message, - Exception innerException ) + public ToUpperDimensionException( string message, Exception innerException ) : base( message, innerException ) { } } /// - /// 当几何体调用了过多的CalcVec方法时,产生UnusedVertexException异常 + /// 当几何体调用了过多的CalcVec方法时,产生UnusedVertexException异常 /// public class UnusedVertexException : Exception { - protected UnusedVertexException( - SerializationInfo info, - StreamingContext context ) + protected UnusedVertexException( SerializationInfo info, StreamingContext context ) : base( info, context ) { } public UnusedVertexException() { } diff --git a/StgSharp.Common/Geometries/GeometryOperation/GeometryOperation.cs b/StgSharp.Common/Geometries/GeometryOperation/GeometryOperation.cs index c8833636..252f6b97 100644 --- a/StgSharp.Common/Geometries/GeometryOperation/GeometryOperation.cs +++ b/StgSharp.Common/Geometries/GeometryOperation/GeometryOperation.cs @@ -40,9 +40,7 @@ using System.Text; namespace StgSharp.Geometries { [UnmanagedFunctionPointer( CallingConvention.Cdecl )] - public delegate Vec3 GeometryMotionDelegate( - TimeSpanProvider timeSource, - out float rotation ); + public delegate Vec3 GeometryMotionDelegate( TimeSpanProvider timeSource, out float rotation ); public class GeometryMotion { @@ -54,20 +52,23 @@ namespace StgSharp.Geometries private TimeSpanProvider time; public unsafe GeometryMotion( - bool isIncreament, - TimeSpanProvider timeSource, - GeometryMotionDelegate motionDelegate ) + bool isIncreament, + TimeSpanProvider timeSource, + GeometryMotionDelegate motionDelegate ) { isIncrementMode = isIncreament; time = timeSource; - if( motionDelegate == null ) { + if( motionDelegate == null ) + { handle = ( IntPtr )( delegate* )&defaultMotion; movement = defaultMotion; - } else if( motionDelegate.Method.IsStatic ) { + } else if( motionDelegate.Method.IsStatic ) + { sourceIsStatic = true; handle = Marshal.GetFunctionPointerForDelegate( motionDelegate ); movement = motionDelegate; - } else { + } else + { movement = motionDelegate; } @@ -88,25 +89,27 @@ namespace StgSharp.Geometries { float rot; Vec3 vec; - if( sourceIsStatic ) { + if( sourceIsStatic ) + { vec = ( ( delegate* unmanaged[Cdecl] )handle )( time, out rot ); - } else { + } else + { vec = movement( time, out rot ); } - if( isIncrementMode ) { + if( isIncrementMode ) + { coord += vec; rotation += rot; - } else { + } else + { coord = vec; rotation = rot; } } - private static Vec3 defaultMotion( - TimeSpanProvider provider, - out float rotation ) + private static Vec3 defaultMotion( TimeSpanProvider provider, out float rotation ) { rotation = 0; return Vec3.Zero; diff --git a/StgSharp.Common/Geometries/IGeometry.cs b/StgSharp.Common/Geometries/IGeometry.cs index 22fda049..c9af01e7 100644 --- a/StgSharp.Common/Geometries/IGeometry.cs +++ b/StgSharp.Common/Geometries/IGeometry.cs @@ -42,33 +42,18 @@ namespace StgSharp.Geometries public interface IGeometry { - public Point this[ int index ] - { - get; - set; - } + public Point this[ int index ] { get; set; } #pragma warning disable CA1819 public Vec4[] VertexStream - #pragma warning restore CA1819 - { - get; - } + #pragma warning restore CA1819 + { get; } - public CoordinationBase Coordination - { - get; - } + public CoordinationBase Coordination { get; } - public int VertexCount - { - get; - } + public int VertexCount { get; } - public ReadOnlySpan VertexIndices - { - get; - } + public ReadOnlySpan VertexIndices { get; } } } diff --git a/StgSharp.Common/Geometries/IInstancing.cs b/StgSharp.Common/Geometries/IInstancing.cs index 2c1162d9..2e56f138 100644 --- a/StgSharp.Common/Geometries/IInstancing.cs +++ b/StgSharp.Common/Geometries/IInstancing.cs @@ -43,53 +43,29 @@ 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 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 float Scale { get { return GlobalBuffer.ScalingList[ BufferId ]; } set { GlobalBuffer.ScalingList[ + BufferId ] = value; } } - public GeometryMotion Motion - { - get; - set; - } + public GeometryMotion Motion { get; set; } - public IInstancingBuffer GlobalBuffer - { - get; - internal set; - } + public IInstancingBuffer GlobalBuffer { get; internal set; } - public int BufferId - { - get; - internal set; - } + public int BufferId { get; internal set; } - public Vec3 CenterPositionGlobal - { - 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.reg ); } - } + public Vec3 Coord { get { return GlobalBuffer.CoordAndRotationList[ BufferId ].XYZ; } set { GlobalBuffer.CoordAndRotationList[ + BufferId ] = new Vec4( + value.reg ); } } public void Move() { diff --git a/StgSharp.Common/Geometries/IInstancingBuffer.cs b/StgSharp.Common/Geometries/IInstancingBuffer.cs index 85e0841b..398e6982 100644 --- a/StgSharp.Common/Geometries/IInstancingBuffer.cs +++ b/StgSharp.Common/Geometries/IInstancingBuffer.cs @@ -39,35 +39,17 @@ namespace StgSharp.Geometries public interface IInstancingBuffer { - public Span CoordAndRotationSpan - { - get; - } + public Span CoordAndRotationSpan { get; } - public Span ScalingSpan - { - get; - } + public Span ScalingSpan { get; } - internal IGeometry TypicalShape - { - get; - } + internal IGeometry TypicalShape { get; } - internal List InstanceList - { - get; - } + internal List InstanceList { get; } - internal List CoordAndRotationList - { - get; - } + internal List CoordAndRotationList { get; } - internal List ScalingList - { - get; - } + internal List ScalingList { get; } } } diff --git a/StgSharp.Common/Geometries/PlainGeometry/Cordinate.cs b/StgSharp.Common/Geometries/PlainGeometry/Cordinate.cs index e16686bf..b77e0b28 100644 --- a/StgSharp.Common/Geometries/PlainGeometry/Cordinate.cs +++ b/StgSharp.Common/Geometries/PlainGeometry/Cordinate.cs @@ -47,14 +47,11 @@ namespace StgSharp.Geometries internal Matrix32 axis; /// - /// The _origin of this coordinate. + /// The _origin of this coordinate. /// public Vec3 origin; - public PartialPlainCoordinate( - Vec3 origin, - Vec3 horiziontial, - Vec3 vertical ) + public PartialPlainCoordinate( Vec3 origin, Vec3 horiziontial, Vec3 vertical ) { this.origin = origin; axis = new Matrix32(); @@ -66,12 +63,12 @@ namespace StgSharp.Geometries } /// - /// The horizontial axis of the coordinate. Point to the right direction. + /// 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. + /// The vertical axis of the coordinate. Point to the top direction. /// public Vec3 axis_V => axis.colum1; diff --git a/StgSharp.Common/Geometries/PlainGeometry/Define/IPlainEntity.cs b/StgSharp.Common/Geometries/PlainGeometry/Define/IPlainEntity.cs index a6773c55..6d47b6c0 100644 --- a/StgSharp.Common/Geometries/PlainGeometry/Define/IPlainEntity.cs +++ b/StgSharp.Common/Geometries/PlainGeometry/Define/IPlainEntity.cs @@ -41,11 +41,7 @@ namespace StgSharp.Geometries public interface IPlainEntity { - public Vec2 CenterPosition - { - get; - set; - } + public Vec2 CenterPosition { get; set; } public bool CollideWith( IPlainEntity entity ); diff --git a/StgSharp.Common/Geometries/PlainGeometry/Define/ParticleOnPlain.cs b/StgSharp.Common/Geometries/PlainGeometry/Define/ParticleOnPlain.cs index d9581574..41c0c95a 100644 --- a/StgSharp.Common/Geometries/PlainGeometry/Define/ParticleOnPlain.cs +++ b/StgSharp.Common/Geometries/PlainGeometry/Define/ParticleOnPlain.cs @@ -53,29 +53,13 @@ namespace StgSharp.Geometries ( ( IInstancingBuffer )buffer ).InstanceList.Add( this ); } - public GeometryMotion Motion - { - get; - set; - } + public GeometryMotion Motion { get; set; } - public IInstancingBuffer GlobalBuffer - { - get; - set; - } + public IInstancingBuffer GlobalBuffer { get; set; } - public int BufferId - { - get; - set; - } + public int BufferId { get; set; } - Vec3 IInstancing.CenterPositionGlobal - { - get; - set; - } + Vec3 IInstancing.CenterPositionGlobal { get; set; } bool IPlainEntity.CollideWith( IPlainEntity entity ) { diff --git a/StgSharp.Common/Geometries/PlainGeometry/Define/PlainGeometry.cs b/StgSharp.Common/Geometries/PlainGeometry/Define/PlainGeometry.cs index dd5466bf..8679605d 100644 --- a/StgSharp.Common/Geometries/PlainGeometry/Define/PlainGeometry.cs +++ b/StgSharp.Common/Geometries/PlainGeometry/Define/PlainGeometry.cs @@ -37,7 +37,7 @@ using System.ComponentModel; namespace StgSharp.Geometries { /// - /// Plain geometry only contains straight sides. + /// Plain geometry only contains straight sides. /// public abstract class PlainGeometry : IGeometry { @@ -58,10 +58,7 @@ namespace StgSharp.Geometries public int VertexCount => this.vertexMat.Length; - public abstract ReadOnlySpan VertexIndices - { - get; - } + public abstract ReadOnlySpan VertexIndices { get; } #pragma warning disable CA1819 public Vec4[] VertexStream => vertexMat; diff --git a/StgSharp.Common/Geometries/PlainGeometry/Define/PlainInstancingBuffer.cs b/StgSharp.Common/Geometries/PlainGeometry/Define/PlainInstancingBuffer.cs index 86e54b61..aa5fae7a 100644 --- a/StgSharp.Common/Geometries/PlainGeometry/Define/PlainInstancingBuffer.cs +++ b/StgSharp.Common/Geometries/PlainGeometry/Define/PlainInstancingBuffer.cs @@ -85,12 +85,12 @@ namespace StgSharp.Geometries { get { - if( coordArray.Length != coordList.Capacity ) { + if( coordArray.Length != coordList.Capacity ) + { FieldInfo fieldInfo = typeof( List ). - GetField( - "_items", - BindingFlags.NonPublic | BindingFlags.Instance ); - if( fieldInfo == null ) { + GetField( "_items", BindingFlags.NonPublic | BindingFlags.Instance ); + if( fieldInfo == null ) + { #pragma warning disable CA1065 #pragma warning disable CA2201 throw new NullReferenceException(); @@ -107,12 +107,12 @@ namespace StgSharp.Geometries { get { - if( scaleArray.Length != coordList.Capacity ) { + if( scaleArray.Length != coordList.Capacity ) + { FieldInfo fieldInfo = typeof( List ). - GetField( - "_items", - BindingFlags.NonPublic | BindingFlags.Instance ); - if( fieldInfo == null ) { + GetField( "_items", BindingFlags.NonPublic | BindingFlags.Instance ); + if( fieldInfo == null ) + { #pragma warning disable CA1065 #pragma warning disable CA2201 throw new NullReferenceException(); @@ -167,8 +167,7 @@ namespace StgSharp.Geometries temp.BufferId = instance.BufferId; coordList[ instance.BufferId ] = coordList[ coordList.Count - 1 ]; - scalingList[ instance.BufferId ] = scalingList[ - scalingList.Count - 1 ]; + scalingList[ instance.BufferId ] = scalingList[ scalingList.Count - 1 ]; instanceList.RemoveAt( instanceList.Count - 1 ); coordList.RemoveAt( coordList.Count - 1 ); @@ -185,7 +184,8 @@ namespace StgSharp.Geometries protected virtual void Dispose( bool disposing ) { - if( !disposedValue ) { + if( !disposedValue ) + { if( disposing ) { mutex.Dispose(); } @@ -204,8 +204,7 @@ namespace StgSharp.Geometries } } - IGeometry IInstancingBuffer.TypicalShape => throw new NotImplementedException( - ); + IGeometry IInstancingBuffer.TypicalShape => throw new NotImplementedException(); #region field of mem opt diff --git a/StgSharp.Common/Geometries/PlainGeometry/Parallelogram.cs b/StgSharp.Common/Geometries/PlainGeometry/Parallelogram.cs index 98b877de..a8467908 100644 --- a/StgSharp.Common/Geometries/PlainGeometry/Parallelogram.cs +++ b/StgSharp.Common/Geometries/PlainGeometry/Parallelogram.cs @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using StgSharp.Math; using System; @@ -44,18 +43,19 @@ namespace StgSharp.Geometries internal Point center; public Parallelogram( - float v0x, - float v0y, - float v1x, - float v1y, - float v2x, - float v2y, - float v3x, - float v3y ) + 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 ) { + 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 ); @@ -64,19 +64,20 @@ namespace StgSharp.Geometries } public Parallelogram( - PlainCoordinate coordination, - float v0x, - float v0y, - float v1x, - float v1y, - float v2x, - float v2y, - float v3x, - float v3y ) + 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 ) { + 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 ); diff --git a/StgSharp.Common/Geometries/PlainGeometry/Polygon4.cs b/StgSharp.Common/Geometries/PlainGeometry/Polygon4.cs index 7af184cc..62492a96 100644 --- a/StgSharp.Common/Geometries/PlainGeometry/Polygon4.cs +++ b/StgSharp.Common/Geometries/PlainGeometry/Polygon4.cs @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using StgSharp.Math; using System; @@ -56,11 +55,7 @@ namespace StgSharp.Geometries vertexMat = rawCoord; } - public Polygon4( - Point topLeft, - Point topRight, - Point bottomRight, - Point bottomLeft ) + public Polygon4( Point topLeft, Point topRight, Point bottomRight, Point bottomLeft ) : base( PlainCoordinate.StandardPlainCoordination ) { this[ 0 ] = topLeft; @@ -70,12 +65,12 @@ namespace StgSharp.Geometries } public Polygon4( - CoordinationBase coordinate, - PlainCoordinate coordination, - Point topLeft, - Point topRight, - Point bottomRight, - Point bottomLeft ) + CoordinationBase coordinate, + PlainCoordinate coordination, + Point topLeft, + Point topRight, + Point bottomRight, + Point bottomLeft ) : base( coordinate ) { this[ 0 ] = topLeft; @@ -85,14 +80,14 @@ namespace StgSharp.Geometries } public Polygon4( - float v0x, - float v0y, - float v1x, - float v1y, - float v2x, - float v2y, - float v3x, - float v3y ) + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y, + float v3x, + float v3y ) : base( PlainCoordinate.StandardPlainCoordination ) { vertexMat = new Vec4[4]; @@ -104,15 +99,15 @@ namespace StgSharp.Geometries } public Polygon4( - PlainCoordinate coordination, - float v0x, - float v0y, - float v1x, - float v1y, - float v2x, - float v2y, - float v3x, - float v3y ) + PlainCoordinate coordination, + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y, + float v3x, + float v3y ) : base( coordination ) { vertexMat = new Vec4[4]; diff --git a/StgSharp.Common/Geometries/PlainGeometry/Polygon5.cs b/StgSharp.Common/Geometries/PlainGeometry/Polygon5.cs index 3ddbc743..83a20618 100644 --- a/StgSharp.Common/Geometries/PlainGeometry/Polygon5.cs +++ b/StgSharp.Common/Geometries/PlainGeometry/Polygon5.cs @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using StgSharp.Math; using System; @@ -48,16 +47,16 @@ namespace StgSharp.Geometries } public Polygon5( - float v0x, - float v0y, - float v1x, - float v1y, - float v2x, - float v2y, - float v3x, - float v3y, - float v4x, - float v4y ) + 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]; @@ -69,17 +68,17 @@ namespace StgSharp.Geometries } public Polygon5( - PlainCoordinate coordination, - float v0x, - float v0y, - float v1x, - float v1y, - float v2x, - float v2y, - float v3x, - float v3y, - float v4x, - float v4y ) + 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]; diff --git a/StgSharp.Common/Geometries/PlainGeometry/Polygon6.cs b/StgSharp.Common/Geometries/PlainGeometry/Polygon6.cs index a7b45881..74c3db33 100644 --- a/StgSharp.Common/Geometries/PlainGeometry/Polygon6.cs +++ b/StgSharp.Common/Geometries/PlainGeometry/Polygon6.cs @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using StgSharp.Math; using System; @@ -48,14 +47,14 @@ namespace StgSharp.Geometries } public Polygon6( - PlainCoordinate coordination, - Vec2 vert0, - Vec2 vert1, - Vec2 vert2, - Vec2 vert3, - Vec2 vert4, - Vec2 vert5, - Vec2 vert6 ) + PlainCoordinate coordination, + Vec2 vert0, + Vec2 vert1, + Vec2 vert2, + Vec2 vert3, + Vec2 vert4, + Vec2 vert5, + Vec2 vert6 ) : base( coordination ) { vertexMat = new Vec4[6]; diff --git a/StgSharp.Common/Geometries/PlainGeometry/Rectangle.cs b/StgSharp.Common/Geometries/PlainGeometry/Rectangle.cs index 6d79fb5d..30efc148 100644 --- a/StgSharp.Common/Geometries/PlainGeometry/Rectangle.cs +++ b/StgSharp.Common/Geometries/PlainGeometry/Rectangle.cs @@ -39,14 +39,14 @@ namespace StgSharp.Geometries { public Rectangle( - float v0x, - float v0y, - float v1x, - float v1y, - float v2x, - float v2y, - float v3x, - float v3y ) + 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 @@ -59,15 +59,15 @@ namespace StgSharp.Geometries } public Rectangle( - PlainCoordinate coordination, - float v0x, - float v0y, - float v1x, - float v1y, - float v2x, - float v2y, - float v3x, - float v3y ) + 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 @@ -80,10 +80,14 @@ namespace StgSharp.Geometries } /// - /// Calculate movement to center + /// Calculate movement to center /// - /// CurrentBlueprint time tick - /// + /// + /// CurrentPipeline 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 index c4a5ce8a..dfff2bfa 100644 --- a/StgSharp.Common/Geometries/PlainGeometry/Square.cs +++ b/StgSharp.Common/Geometries/PlainGeometry/Square.cs @@ -35,20 +35,20 @@ using System.Numerics; namespace StgSharp.Geometries { /// - /// A square + /// A square /// public class Square : Rectangle { public Square( - float v0x, - float v0y, - float v1x, - float v1y, - float v2x, - float v2y, - float v3x, - float v3y ) + 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 ) { } diff --git a/StgSharp.Common/Geometries/PlainGeometry/Triangle.cs b/StgSharp.Common/Geometries/PlainGeometry/Triangle.cs index 04933c7f..abaf5939 100644 --- a/StgSharp.Common/Geometries/PlainGeometry/Triangle.cs +++ b/StgSharp.Common/Geometries/PlainGeometry/Triangle.cs @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using StgSharp.Graphics; using StgSharp.Math; @@ -57,10 +56,10 @@ namespace StgSharp.Geometries } public Triangle( - PlainCoordinate coordination, - Point vertex01, - Point vertex02, - Point vertex03 ) + PlainCoordinate coordination, + Point vertex01, + Point vertex02, + Point vertex03 ) : base( coordination ) { this[ 0 ] = vertex01; @@ -68,13 +67,7 @@ namespace StgSharp.Geometries this[ 2 ] = vertex03; } - public Triangle( - float v0x, - float v0y, - float v1x, - float v1y, - float v2x, - float v2y ) + public Triangle( float v0x, float v0y, float v1x, float v1y, float v2x, float v2y ) : base( PlainCoordinate.StandardPlainCoordination ) { this[ 0 ] = new Point( v0x, v0y, 0 ); @@ -83,13 +76,13 @@ namespace StgSharp.Geometries } public Triangle( - PlainCoordinate coordination, - float v0x, - float v0y, - float v1x, - float v1y, - float v2x, - float v2y ) + PlainCoordinate coordination, + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y ) : base( coordination ) { this[ 0 ] = new Point( v0x, v0y, 0 ); diff --git a/StgSharp.Common/Geometries/Point.cs b/StgSharp.Common/Geometries/Point.cs index 08af0df4..f7ce2558 100644 --- a/StgSharp.Common/Geometries/Point.cs +++ b/StgSharp.Common/Geometries/Point.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="Point.cs" -// Project: StgSharp +// Project: World // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // diff --git a/StgSharp.Common/Geometries/SpaceGeometry/TriangulatedSurface.cs b/StgSharp.Common/Geometries/SpaceGeometry/TriangulatedSurface.cs new file mode 100644 index 00000000..ecbd9b6b --- /dev/null +++ b/StgSharp.Common/Geometries/SpaceGeometry/TriangulatedSurface.cs @@ -0,0 +1,145 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="TriangulatedSurface.cs" +// Project: StepVisualizer +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.HighPerformance; +using StgSharp.Math; +using StgSharp.Math.HighPrecision; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Text; + +namespace StgSharp.Geometries +{ + public class TriangulatedSurface + { + + private HashSet<(int begin,int end)> _sides; + + private List> _sideIndices; + private List _triangleIndices; + private List _vertices; + + public TriangulatedSurface() + { + _triangleIndices = new List(); + _vertices = new List(); + _sides = new HashSet<(int,int)>(); + _sideIndices = new List>(); + } + + /**/ + public IEnumerable> SideIndicesEnumeratble + { + get => _sideIndices ; + } + + /* + public Triangle GetTriangle( int index ) + { + Vec3HP v1,v2,v3; + int t = index * 3; + v1 = _vertices[ t + 0 ]; + v2 = _vertices[ t + 1 ]; + v3 = _vertices[ t + 2 ]; + return new Triangle( v1, v2, v3 ); + } + /**/ + + public Span VertexSpan + { + get => CollectionsMarshal.AsSpan( _vertices ); + } + + public Span TriangleIndicesSpan + { + get => CollectionsMarshal.AsSpan( _triangleIndices ); + } + + /**/ + public void AddIndicesByOrder( int v1, int v2, int v3 ) + { + _triangleIndices.Add( v1 ); + _triangleIndices.Add( v2 ); + _triangleIndices.Add( v3 ); + if( !( _sides.Remove( (v1,v2) ) || _sides.Remove( (v2, v1) ) ) ) { + _sides.Add( (v1, v2) ); + } + if( !( _sides.Remove( (v2, v3) ) || _sides.Remove( (v3, v2) ) ) ) { + _sides.Add( (v2, v3) ); + } + if( !( _sides.Remove( (v3, v1) ) || _sides.Remove( (v1, v3) ) ) ) { + _sides.Add( (v3, v1) ); + } + } + + public void AddVertexByOrder( Vec3 vertex ) + { + _vertices.Add( vertex ); + } + + public int TriangleCount() + { + return _triangleIndices.Count / 3; + } + + public void TrimExcess() + { + _triangleIndices.TrimExcess(); + _vertices.TrimExcess(); + Dictionary side_dictionary = _sides.ToDictionary( x => x.begin, x => x.end ); + int begin = side_dictionary.First().Key; + List sideLoop = new List( begin ); + _sideIndices.Add( sideLoop ); + while( side_dictionary.Count > 0 ) + { + if( side_dictionary.Remove( begin, out begin ) ) + { + sideLoop.Add( begin ); + } else + { + begin = side_dictionary.First().Key; + sideLoop = new List( begin ); + _sideIndices.Add( sideLoop ); + } + } + _sideIndices.TrimExcess(); + } + + public int VertexCount() + { + return _vertices.Count; + } + + } +} diff --git a/StgSharp.Common/Global.cs b/StgSharp.Common/Global.cs index e08b119f..3b5610ec 100644 --- a/StgSharp.Common/Global.cs +++ b/StgSharp.Common/Global.cs @@ -1,4 +1,34 @@ -// This file is used by Code Analysis to maintain SuppressMessage +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Global.cs" +// Project: StepVisualizer +// 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. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// 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. @@ -9,13 +39,63 @@ global using StgSharp.Internal.OpenGL; using System.Diagnostics.CodeAnalysis; -[assembly: SuppressMessage("Design", "CA1008:枚举应具有零值", Justification = "<挂起>", Scope = "type", Target = "~T:StgSharp.Graphics.OpenGL.ShaderStatus")] -[assembly: SuppressMessage("Naming", "CA1715:标识符应具有正确的前缀", Justification = "<挂起>", Scope = "member", Target = "~M:StgSharp.Graphics.OpenGL.ShaderProgram.GetUniform``2(System.String)~StgSharp.Graphics.OpenGL.Uniform{``0,``1}")] -[assembly: SuppressMessage("Naming", "CA1715:标识符应具有正确的前缀", Justification = "<挂起>", Scope = "member", Target = "~M:StgSharp.Graphics.OpenGL.ShaderProgram.GetUniform``3(System.String)~StgSharp.Graphics.OpenGL.Uniform{``0,``1,``2}")] -[assembly: SuppressMessage("Naming", "CA1715:标识符应具有正确的前缀", Justification = "<挂起>", Scope = "member", Target = "~M:StgSharp.Graphics.OpenGL.ShaderProgram.GetUniform``4(System.String)~StgSharp.Graphics.OpenGL.Uniform{``0,``1,``2,``3}")] -[assembly: SuppressMessage("Naming", "CA1715:标识符应具有正确的前缀", Justification = "<挂起>", Scope = "type", Target = "~T:StgSharp.Graphics.OpenGL.Uniform`4")] -[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")] +[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.ViewBase.IViewResponder`1.Item(StgSharp.Controlling.UsrActivity.ITrigger)" )] +[assembly: SuppressMessage( + "Design", + "CA1043:将整型或字符串参数用于索引器", + Justification = "<挂起>", + Scope = "member", + Target = "~P:StgSharp.MVVM.ViewBase.ViewResponder`1.Item(StgSharp.Controlling.UsrActivity.ITrigger)" )] +[assembly: SuppressMessage( + "Performance", + "CA1864:首选 \"IDictionary.TryAdd(TKey, TValue)\" 方法", + Justification = "<挂起>", + Scope = "member", + Target = "~P:StgSharp.MVVM.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/ImageHelper.cs b/StgSharp.Common/Graphics/CPUanimation/ImageHelper.cs index e41a960a..017be4ec 100644 --- a/StgSharp.Common/Graphics/CPUanimation/ImageHelper.cs +++ b/StgSharp.Common/Graphics/CPUanimation/ImageHelper.cs @@ -38,11 +38,7 @@ namespace StgSharp.Graphics public static class ImageHelper { - public static void Resize( - Image i, - int width, - int height, - ImageMovement move ) + public static void Resize( Image i, int width, int height, ImageMovement move ) { if( i == null ) { throw new ArgumentNullException( nameof( i ) ); @@ -58,7 +54,8 @@ namespace StgSharp.Graphics i.Height = height; i.Width = width; i.PixelUpdateCount++; - switch( move ) { + switch( move ) + { case ImageMovement.Discard: break; case ImageMovement.Top: diff --git a/StgSharp.Common/Graphics/Define/BufferObjectBase.cs b/StgSharp.Common/Graphics/Define/BufferObjectBase.cs index 1ea96a71..846f4d24 100644 --- a/StgSharp.Common/Graphics/Define/BufferObjectBase.cs +++ b/StgSharp.Common/Graphics/Define/BufferObjectBase.cs @@ -39,7 +39,7 @@ using System.Threading.Tasks; namespace StgSharp.Graphics { /// - /// Interface of all kinds OpenGL Buffer objects + /// Interface of all kinds OpenGL Buffer objects /// public abstract class BufferObjectBase : IDisposable { @@ -48,16 +48,22 @@ namespace StgSharp.Graphics protected RenderStream binding; /// - /// Get the only handle to one of the Object instance + /// Get the only handle to one of the Object instance /// - /// - /// + /// + /// + /// + /// + /// + /// public GlHandle this[ int index ] => _bufferHandle[ index ]; /// - /// Bind a Buffer instance to OpenGL + /// Bind a Buffer instance to OpenGL /// - /// Index of handle of the object in this instance to be bind + /// + /// Index of handle of the object in this instance to be bind + /// public abstract void Bind( int index ); public void Dispose() diff --git a/StgSharp.Common/Graphics/Image.cs b/StgSharp.Common/Graphics/Image.cs index 40aca0e1..193d86bc 100644 --- a/StgSharp.Common/Graphics/Image.cs +++ b/StgSharp.Common/Graphics/Image.cs @@ -28,8 +28,8 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- -using StgSharp.Internal; using StgSharp.Graphics.OpenGL; +using StgSharp.Internal; using StgSharp.Math; using System; @@ -73,7 +73,8 @@ namespace StgSharp.Graphics { get { - if( ( _data.Length == 0 ) || ( _data == null ) ) { + if( ( _data.Length == 0 ) || ( _data == null ) ) + { GetBytes(); return _data!; } @@ -84,7 +85,7 @@ namespace StgSharp.Graphics public ImageChannel Channel => _rawInfo.Channel; /// - /// Hash code of time pixels updated last time. + /// Hash code of time pixels updated last time. /// public int PixelUpdateCount { @@ -106,8 +107,7 @@ namespace StgSharp.Graphics internal set => _rawInfo.Width = value; } - public int PixelSize => ImageInfo.GetPixelSize( - _rawInfo.pixelLayout, _rawInfo.Channel ); + public int PixelSize => ImageInfo.GetPixelSize( _rawInfo.pixelLayout, _rawInfo.Channel ); public PixelChannelLayout PixelLayout { @@ -134,9 +134,9 @@ namespace StgSharp.Graphics } public static Image FromMemory( - (int width, int height) size, - ImageChannel channel, - byte[] stream ) + (int width, int height) size, + ImageChannel channel, + byte[] stream ) { ImageInfo _info = new ImageInfo { @@ -152,10 +152,10 @@ namespace StgSharp.Graphics } public static Image FromMemory( - (int width, int height) size, - ImageChannel channel, - PixelChannelLayout layout, - byte[] stream ) + (int width, int height) size, + ImageChannel channel, + PixelChannelLayout layout, + byte[] stream ) { ImageInfo _info = new ImageInfo { @@ -172,11 +172,10 @@ namespace StgSharp.Graphics public unsafe byte[] GetBytes() { - if( _data.Length == 0 ) { - int size = Width * Height * ImageInfo.GetPixelSize( - PixelLayout, Channel ); - _data = new Span( ( byte* )_rawInfo.StreamPtr, - size ).ToArray(); + 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 ); } @@ -187,10 +186,7 @@ namespace StgSharp.Graphics public Image ProvideImage() => this; - internal static Image FromMemory( - ImageInfo info, - byte[] data, - int operationCount ) + internal static Image FromMemory( ImageInfo info, byte[] data, int operationCount ) { return new Image { @@ -206,13 +202,9 @@ namespace StgSharp.Graphics } } - } namespace StgSharp.Graphics.OpenGL { - public static partial class GlHelper - { - - } + public static partial class GlHelper { } } \ No newline at end of file diff --git a/StgSharp.Common/Graphics/OpenGL/Buffer/AutoTexture.cs b/StgSharp.Common/Graphics/OpenGL/Buffer/AutoTexture.cs index 61b3aee1..b94fad60 100644 --- a/StgSharp.Common/Graphics/OpenGL/Buffer/AutoTexture.cs +++ b/StgSharp.Common/Graphics/OpenGL/Buffer/AutoTexture.cs @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using StgSharp.Commom.Collections; using System; using System.Collections.Generic; @@ -42,11 +41,11 @@ 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 . + /// 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 { @@ -54,8 +53,7 @@ namespace StgSharp.Graphics.OpenGL private TextureProperty[] propertyCache; private BidirectionalDictionary imageIndexMap = new BidirectionalDictionary( ); - private Dictionary imageUpdateIndex = new Dictionary( - ); + private Dictionary imageUpdateIndex = new Dictionary(); private int _size, _currentIndex; private LinkedList usedTextureIndex; @@ -69,8 +67,7 @@ namespace StgSharp.Graphics.OpenGL texturePackage = texture; _size = texture.Count; imageIndexMap = new BidirectionalDictionary(); - unusedTextureUnitIndex = new Queue( - Enumerable.Range( 0, _size ) ); + unusedTextureUnitIndex = new Queue( Enumerable.Range( 0, _size ) ); usedTextureIndex = new LinkedList(); propertyCache = new TextureProperty[_size]; } @@ -80,8 +77,7 @@ namespace StgSharp.Graphics.OpenGL this._size = textureObjectSize; imageIndexMap = new BidirectionalDictionary(); texturePackage = new TextureGL( textureObjectSize, binding ); - unusedTextureUnitIndex = new Queue( - Enumerable.Range( 0, _size ) ); + unusedTextureUnitIndex = new Queue( Enumerable.Range( 0, _size ) ); usedTextureIndex = new LinkedList(); propertyCache = new TextureProperty[_size]; } @@ -105,29 +101,34 @@ namespace StgSharp.Graphics.OpenGL SelectTextureAndBind( i, property ); } - public void SelectTextureAndBind( - [NotNull]Image i, - TextureProperty property ) + public void SelectTextureAndBind( [NotNull]Image i, TextureProperty property ) { //usable texture with image match - if( imageIndexMap.TryGetValue( i, out int index ) ) { + if( imageIndexMap.TryGetValue( i, out int index ) ) + { //prop setting match - if( propertyCache[ index ] == property ) { + if( propertyCache[ index ] == property ) + { _currentIndex = index; //GL.Assert(true); texturePackage.Bind2D( index ); //GL.Assert(true); - if( i.PixelUpdateCount != imageUpdateIndex[ i ] ) { + if( i.PixelUpdateCount != imageUpdateIndex[ i ] ) + { texturePackage.LoadTexture( index, i ); //GL.Assert(true); } - } else { + } else + { _currentIndex = index; //GL.Assert(true); texturePackage.Bind2D( index ); //GL.Assert(true); texturePackage.Set2dProperty( index, property ); //GL.Assert(true); - if( i.PixelUpdateCount != imageUpdateIndex[ i ] ) { + if( i.PixelUpdateCount != imageUpdateIndex[ i ] ) + { texturePackage.LoadTexture( index, i ); //GL.Assert(true); } } - } else { - if( unusedTextureUnitIndex.TryDequeue( out int newIndex ) ) { + } else + { + if( unusedTextureUnitIndex.TryDequeue( out int newIndex ) ) + { //has extra unused texture object imageIndexMap.Add( i, index ); texturePackage.Bind2D( index ); @@ -136,7 +137,8 @@ namespace StgSharp.Graphics.OpenGL usedTextureIndex.AddLast( newIndex ); propertyCache[ newIndex ] = property; imageUpdateIndex[ i ] = i.PixelUpdateCount; - } else { + } else + { //recycle from current int reusedIndex = usedTextureIndex.First!.Value; usedTextureIndex.RemoveFirst(); @@ -151,8 +153,7 @@ namespace StgSharp.Graphics.OpenGL public static AutoTextureGL ToAuto( [NotNull]TextureGL texture ) { if( texture.IndexOfCurrentTexture != -1 ) { - throw new InvalidOperationException( - "Texture to be converted has been editted." ); + 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 index c624fe01..8f8e468f 100644 --- a/StgSharp.Common/Graphics/OpenGL/Buffer/EBO.cs +++ b/StgSharp.Common/Graphics/OpenGL/Buffer/EBO.cs @@ -43,9 +43,9 @@ 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. + /// 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 { @@ -58,29 +58,21 @@ namespace StgSharp.Graphics.OpenGL public override sealed void Bind( int index ) { - GL.BindBuffer( - BufferType.ElementArrayBuffer, _bufferHandle[ index ] ); + GL.BindBuffer( BufferType.ElementArrayBuffer, _bufferHandle[ index ] ); } public void SetValue( int index, T[] bufferArray, BufferUsage usage ) where T: struct, INumber { - GL.BindBuffer( - BufferType.ElementArrayBuffer, _bufferHandle[ index ] ); - GL.SetBufferData( - BufferType.ElementArrayBuffer, bufferArray, usage ); + GL.BindBuffer( BufferType.ElementArrayBuffer, _bufferHandle[ index ] ); + GL.SetBufferData( BufferType.ElementArrayBuffer, bufferArray, usage ); } - public void SetValue( - int index, - ReadOnlySpan bufferSpan, - BufferUsage usage ) + public void SetValue( int index, ReadOnlySpan bufferSpan, BufferUsage usage ) where T: struct, INumber { - GL.BindBuffer( - BufferType.ElementArrayBuffer, _bufferHandle[ index ] ); - GL.SetBufferData( BufferType.ElementArrayBuffer, bufferSpan, - usage ); + GL.BindBuffer( BufferType.ElementArrayBuffer, _bufferHandle[ index ] ); + GL.SetBufferData( BufferType.ElementArrayBuffer, bufferSpan, usage ); } protected override sealed void Dispose( bool disposing ) diff --git a/StgSharp.Common/Graphics/OpenGL/Buffer/FBO.cs b/StgSharp.Common/Graphics/OpenGL/Buffer/FBO.cs index 169f6fce..b4858935 100644 --- a/StgSharp.Common/Graphics/OpenGL/Buffer/FBO.cs +++ b/StgSharp.Common/Graphics/OpenGL/Buffer/FBO.cs @@ -63,10 +63,13 @@ namespace StgSharp.Graphics.OpenGL } /// - /// Bind the frame Buffer object with _name frame Buffer to the frame Buffer target specified - /// by target. will be set as default target. + /// Bind the frame Buffer object with _label 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 + /// + /// Index of object to be binded in handle set + /// [MethodImpl( MethodImplOptions.AggressiveInlining )] public override unsafe void Bind( int index ) { @@ -74,11 +77,15 @@ namespace StgSharp.Graphics.OpenGL } /// - /// 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. + /// Bind the frame Buffer object with _label 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 + /// + /// 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 ) { @@ -88,8 +95,7 @@ namespace StgSharp.Graphics.OpenGL [MethodImpl( MethodImplOptions.AggressiveInlining )] public static void BindNull() { - OpenGLFunction.CurrentGL - .BindFrameBuffer( FrameBufferTarget.All, GlHandle.Zero ); + OpenGLFunction.CurrentGL.BindFrameBuffer( FrameBufferTarget.All, GlHandle.Zero ); } protected override void Dispose( bool disposing ) diff --git a/StgSharp.Common/Graphics/OpenGL/Buffer/RBO.cs b/StgSharp.Common/Graphics/OpenGL/Buffer/RBO.cs index 56d16466..29b52b24 100644 --- a/StgSharp.Common/Graphics/OpenGL/Buffer/RBO.cs +++ b/StgSharp.Common/Graphics/OpenGL/Buffer/RBO.cs @@ -51,19 +51,17 @@ namespace StgSharp.Graphics.OpenGL GL.BindRenderBuffer( this[ index ] ); } - public void Store( - RenderBufferInternalFormat format, - (int width, int height) size ) + 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" ); + World.LogWarning( "FrameBuffer is larger than current canvas binding" ); } } protected override void Dispose( bool disposing ) { - foreach( GlHandle item in _bufferHandle ) { + 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 index 033cefe7..84bf7ab5 100644 --- a/StgSharp.Common/Graphics/OpenGL/Buffer/TextureGL.cs +++ b/StgSharp.Common/Graphics/OpenGL/Buffer/TextureGL.cs @@ -84,16 +84,20 @@ namespace StgSharp.Graphics.OpenGL } /// - /// Load an to certain texture. + /// 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 ); + Texture2DTarget.Texture2D, 0, i.Channel, ( uint )i.Width, ( uint )i.Height, + i.Channel, i.PixelLayout, pixels: handle ); _gl.GenerateMipmap( Texture2DTarget.Texture2D ); } @@ -101,50 +105,45 @@ namespace StgSharp.Graphics.OpenGL [MethodImpl( MethodImplOptions.AggressiveInlining )] public void Set2dFilterProperty( - int index, - TextureFilter onMinify, - TextureFilter onMagnify ) + int index, + TextureFilter onMinify, + TextureFilter onMagnify ) { #if DEBUG - if( index != currentEditingTextureIndex ) { + 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 ); + _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 ) + int index, + TextureWrap onHorizontial, + TextureWrap onVertical ) { #if DEBUG - if( index != currentEditingTextureIndex ) { + 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 ); + _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 ); + Set2dFilterProperty( index, property.FilterOnMinify, property.FilterOnMagnify ); + Set2dWrapProperty( index, property.WrapOnHorizontial, property.WrapOnVertical ); } #endregion texture setting @@ -162,10 +161,10 @@ namespace StgSharp.Graphics.OpenGL [FieldOffset( 12 )] private TextureWrap vert; public TextureProperty( - TextureFilter onMagnify, - TextureFilter onMinify, - TextureWrap onHorizontial, - TextureWrap onVertical ) + TextureFilter onMagnify, + TextureFilter onMinify, + TextureWrap onHorizontial, + TextureWrap onVertical ) { FilterOnMagnify = onMagnify; FilterOnMinify = onMinify; @@ -205,8 +204,7 @@ namespace StgSharp.Graphics.OpenGL public override int GetHashCode() { return HashCode.Combine( - FilterOnMagnify, FilterOnMagnify, WrapOnHorizontial, - WrapOnVertical ); + FilterOnMagnify, FilterOnMagnify, WrapOnHorizontial, WrapOnVertical ); } public override string ToString() @@ -214,30 +212,25 @@ namespace StgSharp.Graphics.OpenGL return $"FilterOnMagnify:{FilterOnMagnify}, " + $"FilterOnMagnify:{FilterOnMagnify}, " + $"WrapOnHorizontial:{WrapOnHorizontial}, " + $"WrapOnVertical:{WrapOnVertical}"; } - public static bool operator !=( - TextureProperty left, - TextureProperty right ) + public static bool operator !=( TextureProperty left, TextureProperty right ) { return left.mask != right.mask; } - public static bool operator ==( - TextureProperty left, - TextureProperty right ) + 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 ); + propertyValueTuple.onHorizontial, propertyValueTuple.onVertical ); } } diff --git a/StgSharp.Common/Graphics/OpenGL/Buffer/VAO.cs b/StgSharp.Common/Graphics/OpenGL/Buffer/VAO.cs index 28ecd5a2..46cc1121 100644 --- a/StgSharp.Common/Graphics/OpenGL/Buffer/VAO.cs +++ b/StgSharp.Common/Graphics/OpenGL/Buffer/VAO.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="VAO.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using System; using System.Collections.Generic; using System.Runtime.CompilerServices; @@ -59,15 +58,15 @@ namespace StgSharp.Graphics.OpenGL [MethodImpl( MethodImplOptions.AggressiveInlining )] public void SetVertexAttribute( - uint index, - int vertexLength, - TypeCode dataType, - bool isNomalized, - uint stride, - int pointer ) + uint attributeIndex, + int vertexLength, + TypeCode dataType, + bool isNomalized, + uint stride, + int pointer ) { GL.SetVertexAttribute( - index, vertexLength, dataType, isNomalized, stride, pointer ); + attributeIndex, vertexLength, dataType, isNomalized, stride, pointer ); } protected override sealed void Dispose( bool disposing ) diff --git a/StgSharp.Common/Graphics/OpenGL/Buffer/VBO.cs b/StgSharp.Common/Graphics/OpenGL/Buffer/VBO.cs index 08335369..f0ce98cb 100644 --- a/StgSharp.Common/Graphics/OpenGL/Buffer/VBO.cs +++ b/StgSharp.Common/Graphics/OpenGL/Buffer/VBO.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="VBO.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -65,16 +65,21 @@ namespace StgSharp.Graphics.OpenGL } /// - /// Set _data to current vertex Buffer object + /// 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 ) + /// + /// 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, IMatrix { GL.BindBuffer( BufferType.ArrayBuffer, _bufferHandle[ index ] ); @@ -82,16 +87,21 @@ namespace StgSharp.Graphics.OpenGL } /// - /// Set _data to current vertex Buffer object + /// 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 ) + /// + /// 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, INumber { GL.BindBuffer( BufferType.ArrayBuffer, _bufferHandle[ index ] ); @@ -99,16 +109,21 @@ namespace StgSharp.Graphics.OpenGL } /// - /// Set _data to current vertex Buffer object + /// 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 ) + /// + /// 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,INumber { GL.BindBuffer( BufferType.ArrayBuffer, _bufferHandle[ index ] ); @@ -116,16 +131,21 @@ namespace StgSharp.Graphics.OpenGL } /// - /// Set _data to current vertex Buffer object + /// 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 ) + /// + /// 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 ] ); @@ -133,21 +153,25 @@ namespace StgSharp.Graphics.OpenGL } /// - /// Set _data to current vertex Buffer object + /// 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 ) + /// + /// 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 ); + GL.SetBufferVectorData( BufferType.ArrayBuffer, vectorArray, usage ); } protected override sealed void Dispose( bool disposing ) diff --git a/StgSharp.Common/Graphics/OpenGL/ShaderEdit/IglConvertable.cs b/StgSharp.Common/Graphics/OpenGL/ShaderEdit/IglConvertable.cs index 9f37e056..b2055b7d 100644 --- a/StgSharp.Common/Graphics/OpenGL/ShaderEdit/IglConvertable.cs +++ b/StgSharp.Common/Graphics/OpenGL/ShaderEdit/IglConvertable.cs @@ -49,14 +49,14 @@ namespace StgSharp.Graphics.ShaderEdit /// /// /// - public void GainAllUniforms( - ShaderProgram source, - params string[] uniformName ); + public void GainAllUniforms( ShaderProgram source, params string[] uniformName ); /// /// /// - /// + /// + /// + /// public ShaderStruct GetConvertedGLtype(); /// diff --git a/StgSharp.Common/Graphics/OpenGL/ShaderEdit/Shader.cs b/StgSharp.Common/Graphics/OpenGL/ShaderEdit/Shader.cs index 2e427b18..59eac4ca 100644 --- a/StgSharp.Common/Graphics/OpenGL/ShaderEdit/Shader.cs +++ b/StgSharp.Common/Graphics/OpenGL/ShaderEdit/Shader.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="Shader.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -33,6 +33,7 @@ using StgSharp.Internal; using System; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.IO; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; @@ -83,14 +84,14 @@ namespace StgSharp.Graphics.OpenGL /// /// 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 ) + public void AttachTo( int index, [NotNull]ShaderProgram target ) { GL.AttachShader( target.handle, handle[ index ] ); } @@ -187,7 +188,7 @@ namespace StgSharp.Graphics.OpenGL /// /// Get a uniform form current shader, the value type of the uniform should be provided. /// - /// + /// /// ContextName of the Uniform in shader code /// /// @@ -202,7 +203,7 @@ namespace StgSharp.Graphics.OpenGL /// /// Get a uniform form current shader, the value type of the uniform should be provided. /// - /// + /// /// ContextName of the Uniform in shader code /// /// @@ -216,7 +217,7 @@ namespace StgSharp.Graphics.OpenGL /// /// Get a uniform form current shader, the value type of the uniform should be provided. /// - /// + /// /// ContextName of the Uniform in shader code /// /// @@ -232,7 +233,7 @@ namespace StgSharp.Graphics.OpenGL /// /// Get a uniform form current shader, the value type of the uniform should be provided. /// - /// + /// /// ContextName of the Uniform in shader code /// /// diff --git a/StgSharp.Common/Graphics/OpenGL/ShaderEdit/Uniform.cs b/StgSharp.Common/Graphics/OpenGL/ShaderEdit/Uniform.cs index 70349a10..4f3313f4 100644 --- a/StgSharp.Common/Graphics/OpenGL/ShaderEdit/Uniform.cs +++ b/StgSharp.Common/Graphics/OpenGL/ShaderEdit/Uniform.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="Uniform.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -35,6 +35,7 @@ using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Linq; +using System.Numerics; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Text; @@ -65,7 +66,10 @@ namespace StgSharp.Graphics.OpenGL internal static Uniform FromHandle( GlHandle handle ) { - return new Uniform { id = handle }; + return new Uniform + { + id = handle + }; } } @@ -82,14 +86,15 @@ namespace StgSharp.Graphics.OpenGL internal static Uniform FromHandle( GlHandle handle ) { - return new Uniform { id = handle }; + return new Uniform + { + id = handle + }; } } - public sealed class Uniform : Uniform where T: struct - where U: struct - where V: struct + public sealed class Uniform : Uniform where T: struct where U: struct where V: struct { internal Uniform() { } @@ -101,13 +106,15 @@ namespace StgSharp.Graphics.OpenGL internal static Uniform FromHandle( GlHandle handle ) { - return new Uniform { id = handle }; + return new Uniform + { + id = handle + }; } } - public sealed class Uniform : Uniform where T: struct - where U: struct + public sealed class Uniform : Uniform where T: struct where U: struct where V: struct where W: struct { @@ -121,7 +128,10 @@ namespace StgSharp.Graphics.OpenGL internal static Uniform FromHandle( GlHandle handle ) { - return new Uniform { id = handle }; + return new Uniform + { + id = handle + }; } } @@ -133,14 +143,13 @@ namespace StgSharp.Graphics.OpenGL public void SetUniformValue( [NotNull] Uniform uniform, Matrix44 mat ) { Matrix44 temp = mat; - Context.glUniformMatrix4fv( - uniform.id.SignedValue, 1, false, ( float* )&temp ); + Context.glUniformMatrix4fv( uniform.id.SignedValue, 1, false, ( float* )&temp ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] public void SetUniformValue( - [NotNull]Uniform uniform, - Vec4 vec ) + [NotNull]Uniform uniform, + Vec4 vec ) { Vec4 temp = vec; Context.glUniform1fv( uniform.id.SignedValue, 4, &temp.reg ); @@ -166,31 +175,28 @@ namespace StgSharp.Graphics.OpenGL } [MethodImpl( MethodImplOptions.AggressiveInlining )] - public void SetUniformValue( - [NotNull] Uniform uniform, - float v0, - float v1 ) + 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 ) + [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 ) + [NotNull] Uniform uniform, + float v0, + float v1, + float v2, + float v3 ) { Context.glUniform4f( uniform.id.SignedValue, v0, v1, v2, v3 ); } diff --git a/StgSharp.Common/Graphics/OpenGL/glApiManager.cs b/StgSharp.Common/Graphics/OpenGL/glApiManager.cs index d06f7648..3a77e3cc 100644 --- a/StgSharp.Common/Graphics/OpenGL/glApiManager.cs +++ b/StgSharp.Common/Graphics/OpenGL/glApiManager.cs @@ -31,7 +31,7 @@ using StgSharp.HighPerformance; using StgSharp.Math; using StgSharp.MVVM; -using StgSharp.MVVM.View; +using StgSharp.MVVM; using System; using System.Collections.Generic; @@ -60,14 +60,19 @@ namespace StgSharp.Graphics.OpenGL //-------------------------------------------------------------------------------- /// - /// Get the function pointer of given OpenGL api _name + /// Get the function pointer of given OpenGL api _label /// - /// ContextName of the OpenGL api - /// The funtion pointer of the api in stream of + /// + /// 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 ) { + if( ret == default ) + { InternalIO.InternalAppendLog( $"Cannot load OpenGL api called {name}, this api may not exist or supported." ); return ret; @@ -76,9 +81,11 @@ namespace StgSharp.Graphics.OpenGL } /// - /// Load all supported OpenGL APIs and bind them to given . + /// Load all supported OpenGL APIs and bind them to given . /// - /// The handle to current OpenGL viewPortDisplay + /// + /// The handle to current OpenGL viewPortDisplay + /// public static unsafe void LoadOpenGLApiTo( IntPtr contextHandle ) { OpenglContext* context = ( OpenglContext* )contextHandle; @@ -87,7 +94,8 @@ namespace StgSharp.Graphics.OpenGL return; } IntPtr proc = loader( "glGetString" ); - if( proc == IntPtr.Zero ) { + if( proc == IntPtr.Zero ) + { #if DEBUG Console.WriteLine( "Cannot load GL." ); #endif @@ -97,14 +105,13 @@ namespace StgSharp.Graphics.OpenGL string coreVersion; if( context->glGetString( glVersion ) == IntPtr.Zero ) { - InternalIO.InternalWriteLog( - "Failed to call glGetString", LogType.Error ); + InternalIO.InternalWriteLog( "Failed to call glGetString", LogType.Error ); } - coreVersion = Marshal.PtrToStringAnsi( - context->glGetString( glVersion ) ) ?? + coreVersion = Marshal.PtrToStringAnsi( context->glGetString( glVersion ) ) ?? string.Empty; - foreach( string branch in glBranch ) { + foreach( string branch in glBranch ) + { if( coreVersion.Contains( branch ) ) { coreVersion.Replace( branch, string.Empty ); } @@ -114,7 +121,8 @@ namespace StgSharp.Graphics.OpenGL int minorVersion = int.Parse( versionSep[ 1 ] ); CheckCoreVersion( majorVersion, minorVersion ); - try { + try + { #region load_core_gl LoadGLcore10( context, loader ); @@ -139,21 +147,24 @@ namespace StgSharp.Graphics.OpenGL #endregion load_core_gl } - catch( Exception ex ) { + catch( Exception ex ) + { if( ex.Message != "Final Version" ) { throw; } } uint code = context->glGetError(); - Console.WriteLine( code ); - if( code != 0 ) { + if( code != 0 ) + { + Console.WriteLine(code); throw new GlExecutionException( code ); } int extensionCount; context->glGetIntegerv( glConst.NUM_EXTENSIONS, &extensionCount ); - if( extensionCount == 0 ) { + if( extensionCount == 0 ) + { InternalIO.InternalWriteLog( "No supported OpenGL extensions are found.", LogType.Info ); return; @@ -161,7 +172,8 @@ namespace StgSharp.Graphics.OpenGL List extensions = new List(); - for( uint i = 0; i < extensionCount; i++ ) { + for( uint i = 0; i < extensionCount; i++ ) + { byte* strPtr = context->glGetStringi( glConst.EXTENSIONS, i ); extensions.Add( Marshal.PtrToStringAnsi( ( IntPtr )strPtr ) ); } @@ -172,2494 +184,3098 @@ namespace StgSharp.Graphics.OpenGL #region checkGLextensions - if( extensions.Contains( "gl_4DFX_multisample" ) ) { + if( extensions.Contains( "gl_4DFX_multisample" ) ) + { _4DFX_multisample = true; extensions.Remove( "gl_4DFX_multisample" ); } - if( extensions.Contains( "gl_3DFX_tbuffer" ) ) { + if( extensions.Contains( "gl_3DFX_tbuffer" ) ) + { _3DFX_tbuffer = true; extensions.Remove( "gl_3DFX_tbuffer" ); } - if( extensions.Contains( "gl_3DFX_texture_compression_FXT1" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_AMD_conservative_depth" ) ) + { AMD_conservative_depth = true; extensions.Remove( "glAMD_conservative_depth" ); } - if( extensions.Contains( "gl_AMD_debug_output" ) ) { + if( extensions.Contains( "gl_AMD_debug_output" ) ) + { AMD_debug_output = true; extensions.Remove( "glAMD_debug_output" ); } - if( extensions.Contains( "gl_AMD_depth_clamp_separate" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_AMD_interleaved_elements" ) ) + { AMD_interleaved_elements = true; extensions.Remove( "glAMD_interleaved_elements" ); } - if( extensions.Contains( "gl_AMD_multi_draw_indirect" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_AMD_performance_monitor" ) ) + { AMD_performance_monitor = true; extensions.Remove( "glAMD_performance_monitor" ); } - if( extensions.Contains( "gl_AMD_pinned_memory" ) ) { + if( extensions.Contains( "gl_AMD_pinned_memory" ) ) + { AMD_pinned_memory = true; extensions.Remove( "glAMD_pinned_memory" ); } - if( extensions.Contains( "gl_AMD_query_buffer_object" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_AMD_sparse_texture" ) ) + { AMD_sparse_texture = true; extensions.Remove( "glAMD_sparse_texture" ); } - if( extensions.Contains( "gl_AMD_stencil_operation_extended" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_AMD_transform_feedback4" ) ) + { AMD_transform_feedback4 = true; extensions.Remove( "glAMD_transform_feedback4" ); } - if( extensions.Contains( "gl_AMD_vertex_shader_layer" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_APPLE_client_storage" ) ) + { APPLE_client_storage = true; extensions.Remove( "glAPPLE_client_storage" ); } - if( extensions.Contains( "gl_APPLE_element_array" ) ) { + if( extensions.Contains( "gl_APPLE_element_array" ) ) + { APPLE_element_array = true; extensions.Remove( "glAPPLE_element_array" ); } - if( extensions.Contains( "gl_APPLE_fence" ) ) { + if( extensions.Contains( "gl_APPLE_fence" ) ) + { APPLE_fence = true; extensions.Remove( "glAPPLE_fence" ); } - if( extensions.Contains( "gl_APPLE_float_pixels" ) ) { + if( extensions.Contains( "gl_APPLE_float_pixels" ) ) + { APPLE_float_pixels = true; extensions.Remove( "glAPPLE_float_pixels" ); } - if( extensions.Contains( "gl_APPLE_flush_buffer_range" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_APPLE_object_purgeable" ) ) + { APPLE_object_purgeable = true; extensions.Remove( "glAPPLE_object_purgeable" ); } - if( extensions.Contains( "gl_APPLE_rgb_422" ) ) { + if( extensions.Contains( "gl_APPLE_rgb_422" ) ) + { APPLE_rgb_422 = true; extensions.Remove( "glAPPLE_rgb_422" ); } - if( extensions.Contains( "gl_APPLE_row_bytes" ) ) { + if( extensions.Contains( "gl_APPLE_row_bytes" ) ) + { APPLE_row_bytes = true; extensions.Remove( "glAPPLE_row_bytes" ); } - if( extensions.Contains( "gl_APPLE_specular_vector" ) ) { + if( extensions.Contains( "gl_APPLE_specular_vector" ) ) + { APPLE_specular_vector = true; extensions.Remove( "glAPPLE_specular_vector" ); } - if( extensions.Contains( "gl_APPLE_texture_range" ) ) { + if( extensions.Contains( "gl_APPLE_texture_range" ) ) + { APPLE_texture_range = true; extensions.Remove( "glAPPLE_texture_range" ); } - if( extensions.Contains( "gl_APPLE_transform_hint" ) ) { + if( extensions.Contains( "gl_APPLE_transform_hint" ) ) + { APPLE_transform_hint = true; extensions.Remove( "glAPPLE_transform_hint" ); } - if( extensions.Contains( "gl_APPLE_vertex_array_object" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_APPLE_ycbcr_422" ) ) + { APPLE_ycbcr_422 = true; extensions.Remove( "glAPPLE_ycbcr_422" ); } - if( extensions.Contains( "gl_ARB_ES2_compatibility" ) ) { + if( extensions.Contains( "gl_ARB_ES2_compatibility" ) ) + { ARB_ES2_compatibility = true; extensions.Remove( "glARB_ES2_compatibility" ); } - if( extensions.Contains( "gl_ARB_ES3_1_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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_ES3_compatibility" ) ) + { ARB_ES3_compatibility = true; extensions.Remove( "glARB_ES3_compatibility" ); } - if( extensions.Contains( "gl_ARB_arrays_of_arrays" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_base_instance" ) ) + { ARB_base_instance = true; extensions.Remove( "glARB_base_instance" ); } - if( extensions.Contains( "gl_ARB_bindless_texture" ) ) { + if( extensions.Contains( "gl_ARB_bindless_texture" ) ) + { ARB_bindless_texture = true; extensions.Remove( "glARB_bindless_texture" ); } - if( extensions.Contains( "gl_ARB_blend_func_extended" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_buffer_storage" ) ) + { ARB_buffer_storage = true; extensions.Remove( "glARB_buffer_storage" ); } - if( extensions.Contains( "gl_ARB_cl_event" ) ) { + if( extensions.Contains( "gl_ARB_cl_event" ) ) + { ARB_cl_event = true; extensions.Remove( "glARB_cl_event" ); } - if( extensions.Contains( "gl_ARB_clear_buffer_object" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_clear_texture" ) ) + { ARB_clear_texture = true; extensions.Remove( "glARB_clear_texture" ); } - if( extensions.Contains( "gl_ARB_clip_control" ) ) { + if( extensions.Contains( "gl_ARB_clip_control" ) ) + { ARB_clip_control = true; extensions.Remove( "glARB_clip_control" ); } - if( extensions.Contains( "gl_ARB_color_buffer_float" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_compatibility" ) ) + { ARB_compatibility = true; extensions.Remove( "glARB_compatibility" ); } - if( extensions.Contains( "gl_ARB_compressed_texture_pixel_storage" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_conservative_depth" ) ) + { ARB_conservative_depth = true; extensions.Remove( "glARB_conservative_depth" ); } - if( extensions.Contains( "gl_ARB_copy_buffer" ) ) { + if( extensions.Contains( "gl_ARB_copy_buffer" ) ) + { ARB_copy_buffer = true; extensions.Remove( "glARB_copy_buffer" ); } - if( extensions.Contains( "gl_ARB_copy_image" ) ) { + if( extensions.Contains( "gl_ARB_copy_image" ) ) + { ARB_copy_image = true; extensions.Remove( "glARB_copy_image" ); } - if( extensions.Contains( "gl_ARB_cull_distance" ) ) { + if( extensions.Contains( "gl_ARB_cull_distance" ) ) + { ARB_cull_distance = true; extensions.Remove( "glARB_cull_distance" ); } - if( extensions.Contains( "gl_ARB_debug_output" ) ) { + if( extensions.Contains( "gl_ARB_debug_output" ) ) + { ARB_debug_output = true; extensions.Remove( "glARB_debug_output" ); } - if( extensions.Contains( "gl_ARB_depth_buffer_float" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_depth_clamp" ) ) + { ARB_depth_clamp = true; extensions.Remove( "glARB_depth_clamp" ); } - if( extensions.Contains( "gl_ARB_depth_texture" ) ) { + if( extensions.Contains( "gl_ARB_depth_texture" ) ) + { ARB_depth_texture = true; extensions.Remove( "glARB_depth_texture" ); } - if( extensions.Contains( "gl_ARB_derivative_control" ) ) { + if( extensions.Contains( "gl_ARB_derivative_control" ) ) + { ARB_derivative_control = true; extensions.Remove( "glARB_derivative_control" ); } - if( extensions.Contains( "gl_ARB_direct_state_access" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_draw_buffers" ) ) + { ARB_draw_buffers = true; extensions.Remove( "glARB_draw_buffers" ); } - if( extensions.Contains( "gl_ARB_draw_buffers_blend" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_draw_indirect" ) ) + { ARB_draw_indirect = true; extensions.Remove( "glARB_draw_indirect" ); } - if( extensions.Contains( "gl_ARB_draw_instanced" ) ) { + if( extensions.Contains( "gl_ARB_draw_instanced" ) ) + { ARB_draw_instanced = true; extensions.Remove( "glARB_draw_instanced" ); } - if( extensions.Contains( "gl_ARB_enhanced_layouts" ) ) { + if( extensions.Contains( "gl_ARB_enhanced_layouts" ) ) + { ARB_enhanced_layouts = true; extensions.Remove( "glARB_enhanced_layouts" ); } - if( extensions.Contains( "gl_ARB_explicit_attrib_location" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_fragment_program" ) ) + { ARB_fragment_program = true; extensions.Remove( "glARB_fragment_program" ); } - if( extensions.Contains( "gl_ARB_fragment_program_shadow" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_fragment_shader" ) ) + { ARB_fragment_shader = true; extensions.Remove( "glARB_fragment_shader" ); } - if( extensions.Contains( "gl_ARB_fragment_shader_interlock" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_framebuffer_object" ) ) + { ARB_framebuffer_object = true; extensions.Remove( "glARB_framebuffer_object" ); } - if( extensions.Contains( "gl_ARB_framebuffer_sRGB" ) ) { + if( extensions.Contains( "gl_ARB_framebuffer_sRGB" ) ) + { ARB_framebuffer_sRGB = true; extensions.Remove( "glARB_framebuffer_sRGB" ); } - if( extensions.Contains( "gl_ARB_geometry_shader4" ) ) { + if( extensions.Contains( "gl_ARB_geometry_shader4" ) ) + { ARB_geometry_shader4 = true; extensions.Remove( "glARB_geometry_shader4" ); } - if( extensions.Contains( "gl_ARB_get_program_binary" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_gl_spirv" ) ) + { ARB_gl_spirv = true; extensions.Remove( "glARB_gl_spirv" ); } - if( extensions.Contains( "gl_ARB_gpu_shader5" ) ) { + if( extensions.Contains( "gl_ARB_gpu_shader5" ) ) + { ARB_gpu_shader5 = true; extensions.Remove( "glARB_gpu_shader5" ); } - if( extensions.Contains( "gl_ARB_gpu_shader_fp64" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_imaging" ) ) + { ARB_imaging = true; extensions.Remove( "glARB_imaging" ); } - if( extensions.Contains( "gl_ARB_indirect_parameters" ) ) { + if( extensions.Contains( "gl_ARB_indirect_parameters" ) ) + { ARB_indirect_parameters = true; extensions.Remove( "glARB_indirect_parameters" ); } - if( extensions.Contains( "gl_ARB_instanced_arrays" ) ) { + if( extensions.Contains( "gl_ARB_instanced_arrays" ) ) + { ARB_instanced_arrays = true; extensions.Remove( "glARB_instanced_arrays" ); } - if( extensions.Contains( "gl_ARB_internalformat_query" ) ) { + if( extensions.Contains( "gl_ARB_internalformat_query" ) ) + { ARB_internalformat_query = true; extensions.Remove( "glARB_internalformat_query" ); } - if( extensions.Contains( "gl_ARB_internalformat_query2" ) ) { + if( extensions.Contains( "gl_ARB_internalformat_query2" ) ) + { ARB_internalformat_query2 = true; extensions.Remove( "glARB_internalformat_query2" ); } - if( extensions.Contains( "gl_ARB_invalidate_subdata" ) ) { + if( extensions.Contains( "gl_ARB_invalidate_subdata" ) ) + { ARB_invalidate_subdata = true; extensions.Remove( "glARB_invalidate_subdata" ); } - if( extensions.Contains( "gl_ARB_map_buffer_alignment" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_matrix_palette" ) ) + { ARB_matrix_palette = true; extensions.Remove( "glARB_matrix_palette" ); } - if( extensions.Contains( "gl_ARB_multi_bind" ) ) { + if( extensions.Contains( "gl_ARB_multi_bind" ) ) + { ARB_multi_bind = true; extensions.Remove( "glARB_multi_bind" ); } - if( extensions.Contains( "gl_ARB_multi_draw_indirect" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_multisample" ) ) + { ARB_multisample = true; extensions.Remove( "glARB_multisample" ); } - if( extensions.Contains( "gl_ARB_multitexture" ) ) { + if( extensions.Contains( "gl_ARB_multitexture" ) ) + { ARB_multitexture = true; extensions.Remove( "glARB_multitexture" ); } - if( extensions.Contains( "gl_ARB_occlusion_query" ) ) { + if( extensions.Contains( "gl_ARB_occlusion_query" ) ) + { ARB_occlusion_query = true; extensions.Remove( "glARB_occlusion_query" ); } - if( extensions.Contains( "gl_ARB_occlusion_query2" ) ) { + if( extensions.Contains( "gl_ARB_occlusion_query2" ) ) + { ARB_occlusion_query2 = true; extensions.Remove( "glARB_occlusion_query2" ); } - if( extensions.Contains( "gl_ARB_parallel_shader_compile" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_point_parameters" ) ) + { ARB_point_parameters = true; extensions.Remove( "glARB_point_parameters" ); } - if( extensions.Contains( "gl_ARB_point_sprite" ) ) { + if( extensions.Contains( "gl_ARB_point_sprite" ) ) + { ARB_point_sprite = true; extensions.Remove( "glARB_point_sprite" ); } - if( extensions.Contains( "gl_ARB_polygon_offset_clamp" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_provoking_vertex" ) ) + { ARB_provoking_vertex = true; extensions.Remove( "glARB_provoking_vertex" ); } - if( extensions.Contains( "gl_ARB_query_buffer_object" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_robustness" ) ) + { ARB_robustness = true; extensions.Remove( "glARB_robustness" ); } - if( extensions.Contains( "gl_ARB_robustness_isolation" ) ) { + if( extensions.Contains( "gl_ARB_robustness_isolation" ) ) + { ARB_robustness_isolation = true; extensions.Remove( "glARB_robustness_isolation" ); } - if( extensions.Contains( "gl_ARB_sample_locations" ) ) { + if( extensions.Contains( "gl_ARB_sample_locations" ) ) + { ARB_sample_locations = true; extensions.Remove( "glARB_sample_locations" ); } - if( extensions.Contains( "gl_ARB_sample_shading" ) ) { + if( extensions.Contains( "gl_ARB_sample_shading" ) ) + { ARB_sample_shading = true; extensions.Remove( "glARB_sample_shading" ); } - if( extensions.Contains( "gl_ARB_sampler_objects" ) ) { + if( extensions.Contains( "gl_ARB_sampler_objects" ) ) + { ARB_sampler_objects = true; extensions.Remove( "glARB_sampler_objects" ); } - if( extensions.Contains( "gl_ARB_seamless_cube_map" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_shader_ballot" ) ) + { ARB_shader_ballot = true; extensions.Remove( "glARB_shader_ballot" ); } - if( extensions.Contains( "gl_ARB_shader_bit_encoding" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_shader_clock" ) ) + { ARB_shader_clock = true; extensions.Remove( "glARB_shader_clock" ); } - if( extensions.Contains( "gl_ARB_shader_draw_parameters" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_shader_objects" ) ) + { ARB_shader_objects = true; extensions.Remove( "glARB_shader_objects" ); } - if( extensions.Contains( "gl_ARB_shader_precision" ) ) { + if( extensions.Contains( "gl_ARB_shader_precision" ) ) + { ARB_shader_precision = true; extensions.Remove( "glARB_shader_precision" ); } - if( extensions.Contains( "gl_ARB_shader_stencil_export" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_shadow" ) ) + { ARB_shadow = true; extensions.Remove( "glARB_shadow" ); } - if( extensions.Contains( "gl_ARB_shadow_ambient" ) ) { + if( extensions.Contains( "gl_ARB_shadow_ambient" ) ) + { ARB_shadow_ambient = true; extensions.Remove( "glARB_shadow_ambient" ); } - if( extensions.Contains( "gl_ARB_sparse_buffer" ) ) { + if( extensions.Contains( "gl_ARB_sparse_buffer" ) ) + { ARB_sparse_buffer = true; extensions.Remove( "glARB_sparse_buffer" ); } - if( extensions.Contains( "gl_ARB_sparse_texture" ) ) { + if( extensions.Contains( "gl_ARB_sparse_texture" ) ) + { ARB_sparse_texture = true; extensions.Remove( "glARB_sparse_texture" ); } - if( extensions.Contains( "gl_ARB_sparse_texture2" ) ) { + if( extensions.Contains( "gl_ARB_sparse_texture2" ) ) + { ARB_sparse_texture2 = true; extensions.Remove( "glARB_sparse_texture2" ); } - if( extensions.Contains( "gl_ARB_sparse_texture_clamp" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_spirv_extensions" ) ) + { ARB_spirv_extensions = true; extensions.Remove( "glARB_spirv_extensions" ); } - if( extensions.Contains( "gl_ARB_stencil_texturing" ) ) { + if( extensions.Contains( "gl_ARB_stencil_texturing" ) ) + { ARB_stencil_texturing = true; extensions.Remove( "glARB_stencil_texturing" ); } - if( extensions.Contains( "gl_ARB_sync" ) ) { + if( extensions.Contains( "gl_ARB_sync" ) ) + { ARB_sync = true; extensions.Remove( "glARB_sync" ); } - if( extensions.Contains( "gl_ARB_tessellation_shader" ) ) { + if( extensions.Contains( "gl_ARB_tessellation_shader" ) ) + { ARB_tessellation_shader = true; extensions.Remove( "glARB_tessellation_shader" ); } - if( extensions.Contains( "gl_ARB_texture_barrier" ) ) { + if( extensions.Contains( "gl_ARB_texture_barrier" ) ) + { ARB_texture_barrier = true; extensions.Remove( "glARB_texture_barrier" ); } - if( extensions.Contains( "gl_ARB_texture_border_clamp" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_texture_compression" ) ) + { ARB_texture_compression = true; extensions.Remove( "glARB_texture_compression" ); } - if( extensions.Contains( "gl_ARB_texture_compression_bptc" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_texture_float" ) ) + { ARB_texture_float = true; extensions.Remove( "glARB_texture_float" ); } - if( extensions.Contains( "gl_ARB_texture_gather" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_texture_rectangle" ) ) + { ARB_texture_rectangle = true; extensions.Remove( "glARB_texture_rectangle" ); } - if( extensions.Contains( "gl_ARB_texture_rg" ) ) { + if( extensions.Contains( "gl_ARB_texture_rg" ) ) + { ARB_texture_rg = true; extensions.Remove( "glARB_texture_rg" ); } - if( extensions.Contains( "gl_ARB_texture_rgb10_a2ui" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_texture_stencil8" ) ) + { ARB_texture_stencil8 = true; extensions.Remove( "glARB_texture_stencil8" ); } - if( extensions.Contains( "gl_ARB_texture_storage" ) ) { + if( extensions.Contains( "gl_ARB_texture_storage" ) ) + { ARB_texture_storage = true; extensions.Remove( "glARB_texture_storage" ); } - if( extensions.Contains( "gl_ARB_texture_storage_multisample" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_texture_swizzle" ) ) + { ARB_texture_swizzle = true; extensions.Remove( "glARB_texture_swizzle" ); } - if( extensions.Contains( "gl_ARB_texture_view" ) ) { + if( extensions.Contains( "gl_ARB_texture_view" ) ) + { ARB_texture_view = true; extensions.Remove( "glARB_texture_view" ); } - if( extensions.Contains( "gl_ARB_timer_query" ) ) { + if( extensions.Contains( "gl_ARB_timer_query" ) ) + { ARB_timer_query = true; extensions.Remove( "glARB_timer_query" ); } - if( extensions.Contains( "gl_ARB_transform_feedback2" ) ) { + if( extensions.Contains( "gl_ARB_transform_feedback2" ) ) + { ARB_transform_feedback2 = true; extensions.Remove( "glARB_transform_feedback2" ); } - if( extensions.Contains( "gl_ARB_transform_feedback3" ) ) { + if( extensions.Contains( "gl_ARB_transform_feedback3" ) ) + { ARB_transform_feedback3 = true; extensions.Remove( "glARB_transform_feedback3" ); } - if( extensions.Contains( "gl_ARB_transform_feedback_instanced" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_transpose_matrix" ) ) + { ARB_transpose_matrix = true; extensions.Remove( "glARB_transpose_matrix" ); } - if( extensions.Contains( "gl_ARB_uniform_buffer_object" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_vertex_blend" ) ) + { ARB_vertex_blend = true; extensions.Remove( "glARB_vertex_blend" ); } - if( extensions.Contains( "gl_ARB_vertex_buffer_object" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_vertex_program" ) ) + { ARB_vertex_program = true; extensions.Remove( "glARB_vertex_program" ); } - if( extensions.Contains( "gl_ARB_vertex_shader" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_viewport_array" ) ) + { ARB_viewport_array = true; extensions.Remove( "glARB_viewport_array" ); } - if( extensions.Contains( "gl_ARB_window_pos" ) ) { + if( extensions.Contains( "gl_ARB_window_pos" ) ) + { ARB_window_pos = true; extensions.Remove( "glARB_window_pos" ); } - if( extensions.Contains( "gl_ATI_draw_buffers" ) ) { + if( extensions.Contains( "gl_ATI_draw_buffers" ) ) + { ATI_draw_buffers = true; extensions.Remove( "glATI_draw_buffers" ); } - if( extensions.Contains( "gl_ATI_element_array" ) ) { + if( extensions.Contains( "gl_ATI_element_array" ) ) + { ATI_element_array = true; extensions.Remove( "glATI_element_array" ); } - if( extensions.Contains( "gl_ATI_envmap_bumpmap" ) ) { + if( extensions.Contains( "gl_ATI_envmap_bumpmap" ) ) + { ATI_envmap_bumpmap = true; extensions.Remove( "glATI_envmap_bumpmap" ); } - if( extensions.Contains( "gl_ATI_fragment_shader" ) ) { + if( extensions.Contains( "gl_ATI_fragment_shader" ) ) + { ATI_fragment_shader = true; extensions.Remove( "glATI_fragment_shader" ); } - if( extensions.Contains( "gl_ATI_map_object_buffer" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ATI_meminfo" ) ) + { ATI_meminfo = true; extensions.Remove( "glATI_meminfo" ); } - if( extensions.Contains( "gl_ATI_pixel_format_float" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ATI_pn_triangles" ) ) + { ATI_pn_triangles = true; extensions.Remove( "glATI_pn_triangles" ); } - if( extensions.Contains( "gl_ATI_separate_stencil" ) ) { + if( extensions.Contains( "gl_ATI_separate_stencil" ) ) + { ATI_separate_stencil = true; extensions.Remove( "glATI_separate_stencil" ); } - if( extensions.Contains( "gl_ATI_text_fragment_shader" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ATI_texture_float" ) ) + { ATI_texture_float = true; extensions.Remove( "glATI_texture_float" ); } - if( extensions.Contains( "gl_ATI_texture_mirror_once" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ATI_vertex_streams" ) ) + { ATI_vertex_streams = true; extensions.Remove( "glATI_vertex_streams" ); } - if( extensions.Contains( "gl_EXT_422_pixels" ) ) { + if( extensions.Contains( "gl_EXT_422_pixels" ) ) + { EXT_422_pixels = true; extensions.Remove( "glEXT_422_pixels" ); } - if( extensions.Contains( "gl_EXT_EGL_image_storage" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_EGL_sync" ) ) + { EXT_EGL_sync = true; extensions.Remove( "glEXT_EGL_sync" ); } - if( extensions.Contains( "gl_EXT_abgr" ) ) { + if( extensions.Contains( "gl_EXT_abgr" ) ) + { EXT_abgr = true; extensions.Remove( "glEXT_abgr" ); } - if( extensions.Contains( "gl_EXT_bgra" ) ) { + if( extensions.Contains( "gl_EXT_bgra" ) ) + { EXT_bgra = true; extensions.Remove( "glEXT_bgra" ); } - if( extensions.Contains( "gl_EXT_bindable_uniform" ) ) { + if( extensions.Contains( "gl_EXT_bindable_uniform" ) ) + { EXT_bindable_uniform = true; extensions.Remove( "glEXT_bindable_uniform" ); } - if( extensions.Contains( "gl_EXT_blend_color" ) ) { + if( extensions.Contains( "gl_EXT_blend_color" ) ) + { EXT_blend_color = true; extensions.Remove( "glEXT_blend_color" ); } - if( extensions.Contains( "gl_EXT_blend_equation_separate" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_blend_minmax" ) ) + { EXT_blend_minmax = true; extensions.Remove( "glEXT_blend_minmax" ); } - if( extensions.Contains( "gl_EXT_blend_subtract" ) ) { + if( extensions.Contains( "gl_EXT_blend_subtract" ) ) + { EXT_blend_subtract = true; extensions.Remove( "glEXT_blend_subtract" ); } - if( extensions.Contains( "gl_EXT_clip_volume_hint" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_cmyka" ) ) + { EXT_cmyka = true; extensions.Remove( "glEXT_cmyka" ); } - if( extensions.Contains( "gl_EXT_color_subtable" ) ) { + if( extensions.Contains( "gl_EXT_color_subtable" ) ) + { EXT_color_subtable = true; extensions.Remove( "glEXT_color_subtable" ); } - if( extensions.Contains( "gl_EXT_compiled_vertex_array" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_convolution" ) ) + { EXT_convolution = true; extensions.Remove( "glEXT_convolution" ); } - if( extensions.Contains( "gl_EXT_coordinate_frame" ) ) { + if( extensions.Contains( "gl_EXT_coordinate_frame" ) ) + { EXT_coordinate_frame = true; extensions.Remove( "glEXT_coordinate_frame" ); } - if( extensions.Contains( "gl_EXT_copy_texture" ) ) { + if( extensions.Contains( "gl_EXT_copy_texture" ) ) + { EXT_copy_texture = true; extensions.Remove( "glEXT_copy_texture" ); } - if( extensions.Contains( "gl_EXT_cull_vertex" ) ) { + if( extensions.Contains( "gl_EXT_cull_vertex" ) ) + { EXT_cull_vertex = true; extensions.Remove( "glEXT_cull_vertex" ); } - if( extensions.Contains( "gl_EXT_debug_label" ) ) { + if( extensions.Contains( "gl_EXT_debug_label" ) ) + { EXT_debug_label = true; extensions.Remove( "glEXT_debug_label" ); } - if( extensions.Contains( "gl_EXT_debug_marker" ) ) { + if( extensions.Contains( "gl_EXT_debug_marker" ) ) + { EXT_debug_marker = true; extensions.Remove( "glEXT_debug_marker" ); } - if( extensions.Contains( "gl_EXT_depth_bounds_test" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_draw_buffers2" ) ) + { EXT_draw_buffers2 = true; extensions.Remove( "glEXT_draw_buffers2" ); } - if( extensions.Contains( "gl_EXT_draw_instanced" ) ) { + if( extensions.Contains( "gl_EXT_draw_instanced" ) ) + { EXT_draw_instanced = true; extensions.Remove( "glEXT_draw_instanced" ); } - if( extensions.Contains( "gl_EXT_draw_range_elements" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_external_buffer" ) ) + { EXT_external_buffer = true; extensions.Remove( "glEXT_external_buffer" ); } - if( extensions.Contains( "gl_EXT_fog_coord" ) ) { + if( extensions.Contains( "gl_EXT_fog_coord" ) ) + { EXT_fog_coord = true; extensions.Remove( "glEXT_fog_coord" ); } - if( extensions.Contains( "gl_EXT_framebuffer_blit" ) ) { + if( extensions.Contains( "gl_EXT_framebuffer_blit" ) ) + { EXT_framebuffer_blit = true; extensions.Remove( "glEXT_framebuffer_blit" ); } - if( extensions.Contains( "gl_EXT_framebuffer_blit_layers" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_framebuffer_object" ) ) + { EXT_framebuffer_object = true; extensions.Remove( "glEXT_framebuffer_object" ); } - if( extensions.Contains( "gl_EXT_framebuffer_sRGB" ) ) { + if( extensions.Contains( "gl_EXT_framebuffer_sRGB" ) ) + { EXT_framebuffer_sRGB = true; extensions.Remove( "glEXT_framebuffer_sRGB" ); } - if( extensions.Contains( "gl_EXT_geometry_shader4" ) ) { + if( extensions.Contains( "gl_EXT_geometry_shader4" ) ) + { EXT_geometry_shader4 = true; extensions.Remove( "glEXT_geometry_shader4" ); } - if( extensions.Contains( "gl_EXT_gpu_program_parameters" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_gpu_shader4" ) ) + { EXT_gpu_shader4 = true; extensions.Remove( "glEXT_gpu_shader4" ); } - if( extensions.Contains( "gl_EXT_histogram" ) ) { + if( extensions.Contains( "gl_EXT_histogram" ) ) + { EXT_histogram = true; extensions.Remove( "glEXT_histogram" ); } - if( extensions.Contains( "gl_EXT_index_array_formats" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_index_func" ) ) + { EXT_index_func = true; extensions.Remove( "glEXT_index_func" ); } - if( extensions.Contains( "gl_EXT_index_material" ) ) { + if( extensions.Contains( "gl_EXT_index_material" ) ) + { EXT_index_material = true; extensions.Remove( "glEXT_index_material" ); } - if( extensions.Contains( "gl_EXT_index_texture" ) ) { + if( extensions.Contains( "gl_EXT_index_texture" ) ) + { EXT_index_texture = true; extensions.Remove( "glEXT_index_texture" ); } - if( extensions.Contains( "gl_EXT_light_texture" ) ) { + if( extensions.Contains( "gl_EXT_light_texture" ) ) + { EXT_light_texture = true; extensions.Remove( "glEXT_light_texture" ); } - if( extensions.Contains( "gl_EXT_memory_object" ) ) { + if( extensions.Contains( "gl_EXT_memory_object" ) ) + { EXT_memory_object = true; extensions.Remove( "glEXT_memory_object" ); } - if( extensions.Contains( "gl_EXT_memory_object_fd" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_misc_attribute" ) ) + { EXT_misc_attribute = true; extensions.Remove( "glEXT_misc_attribute" ); } - if( extensions.Contains( "gl_EXT_multi_draw_arrays" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_multisample" ) ) + { EXT_multisample = true; extensions.Remove( "glEXT_multisample" ); } - if( extensions.Contains( - "gl_EXT_multiview_tessellation_geometry_shader" ) ) { + if( extensions.Contains( "gl_EXT_multiview_tessellation_geometry_shader" ) ) + { EXT_multiview_tessellation_geometry_shader = true; - extensions.Remove( - "glEXT_multiview_tessellation_geometry_shader" ); + extensions.Remove( "glEXT_multiview_tessellation_geometry_shader" ); } - if( extensions.Contains( "gl_EXT_multiview_texture_multisample" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_packed_float" ) ) + { EXT_packed_float = true; extensions.Remove( "glEXT_packed_float" ); } - if( extensions.Contains( "gl_EXT_packed_pixels" ) ) { + if( extensions.Contains( "gl_EXT_packed_pixels" ) ) + { EXT_packed_pixels = true; extensions.Remove( "glEXT_packed_pixels" ); } - if( extensions.Contains( "gl_EXT_paletted_texture" ) ) { + if( extensions.Contains( "gl_EXT_paletted_texture" ) ) + { EXT_paletted_texture = true; extensions.Remove( "glEXT_paletted_texture" ); } - if( extensions.Contains( "gl_EXT_pixel_buffer_object" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_point_parameters" ) ) + { EXT_point_parameters = true; extensions.Remove( "glEXT_point_parameters" ); } - if( extensions.Contains( "gl_EXT_polygon_offset" ) ) { + if( extensions.Contains( "gl_EXT_polygon_offset" ) ) + { EXT_polygon_offset = true; extensions.Remove( "glEXT_polygon_offset" ); } - if( extensions.Contains( "gl_EXT_polygon_offset_clamp" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_provoking_vertex" ) ) + { EXT_provoking_vertex = true; extensions.Remove( "glEXT_provoking_vertex" ); } - if( extensions.Contains( "gl_EXT_raster_multisample" ) ) { + if( extensions.Contains( "gl_EXT_raster_multisample" ) ) + { EXT_raster_multisample = true; extensions.Remove( "glEXT_raster_multisample" ); } - if( extensions.Contains( "gl_EXT_rescale_normal" ) ) { + if( extensions.Contains( "gl_EXT_rescale_normal" ) ) + { EXT_rescale_normal = true; extensions.Remove( "glEXT_rescale_normal" ); } - if( extensions.Contains( "gl_EXT_secondary_color" ) ) { + if( extensions.Contains( "gl_EXT_secondary_color" ) ) + { EXT_secondary_color = true; extensions.Remove( "glEXT_secondary_color" ); } - if( extensions.Contains( "gl_EXT_semaphore" ) ) { + if( extensions.Contains( "gl_EXT_semaphore" ) ) + { EXT_semaphore = true; extensions.Remove( "glEXT_semaphore" ); } - if( extensions.Contains( "gl_EXT_semaphore_fd" ) ) { + if( extensions.Contains( "gl_EXT_semaphore_fd" ) ) + { EXT_semaphore_fd = true; extensions.Remove( "glEXT_semaphore_fd" ); } - if( extensions.Contains( "gl_EXT_semaphore_win32" ) ) { + if( extensions.Contains( "gl_EXT_semaphore_win32" ) ) + { EXT_semaphore_win32 = true; extensions.Remove( "glEXT_semaphore_win32" ); } - if( extensions.Contains( "gl_EXT_separate_shader_objects" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ); + extensions.Remove( "glEXT_shader_framebuffer_fetch_non_coherent" ); } - if( extensions.Contains( "gl_EXT_shader_image_load_formatted" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_shadow_funcs" ) ) + { EXT_shadow_funcs = true; extensions.Remove( "glEXT_shadow_funcs" ); } - if( extensions.Contains( "gl_EXT_shared_texture_palette" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_sparse_texture2" ) ) + { EXT_sparse_texture2 = true; extensions.Remove( "glEXT_sparse_texture2" ); } - if( extensions.Contains( "gl_EXT_stencil_clear_tag" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_stencil_wrap" ) ) + { EXT_stencil_wrap = true; extensions.Remove( "glEXT_stencil_wrap" ); } - if( extensions.Contains( "gl_EXT_subtexture" ) ) { + if( extensions.Contains( "gl_EXT_subtexture" ) ) + { EXT_subtexture = true; extensions.Remove( "glEXT_subtexture" ); } - if( extensions.Contains( "gl_EXT_texture" ) ) { + if( extensions.Contains( "gl_EXT_texture" ) ) + { EXT_texture = true; extensions.Remove( "glEXT_texture" ); } - if( extensions.Contains( "gl_EXT_texture3D" ) ) { + if( extensions.Contains( "gl_EXT_texture3D" ) ) + { EXT_texture3D = true; extensions.Remove( "glEXT_texture3D" ); } - if( extensions.Contains( "gl_EXT_texture_array" ) ) { + if( extensions.Contains( "gl_EXT_texture_array" ) ) + { EXT_texture_array = true; extensions.Remove( "glEXT_texture_array" ); } - if( extensions.Contains( "gl_EXT_texture_buffer_object" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_texture_integer" ) ) + { EXT_texture_integer = true; extensions.Remove( "glEXT_texture_integer" ); } - if( extensions.Contains( "gl_EXT_texture_lod_bias" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_texture_object" ) ) + { EXT_texture_object = true; extensions.Remove( "glEXT_texture_object" ); } - if( extensions.Contains( "gl_EXT_texture_perturb_normal" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_texture_sRGB" ) ) + { EXT_texture_sRGB = true; extensions.Remove( "glEXT_texture_sRGB" ); } - if( extensions.Contains( "gl_EXT_texture_sRGB_R8" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_texture_snorm" ) ) + { EXT_texture_snorm = true; extensions.Remove( "glEXT_texture_snorm" ); } - if( extensions.Contains( "gl_EXT_texture_storage" ) ) { + if( extensions.Contains( "gl_EXT_texture_storage" ) ) + { EXT_texture_storage = true; extensions.Remove( "glEXT_texture_storage" ); } - if( extensions.Contains( "gl_EXT_texture_swizzle" ) ) { + if( extensions.Contains( "gl_EXT_texture_swizzle" ) ) + { EXT_texture_swizzle = true; extensions.Remove( "glEXT_texture_swizzle" ); } - if( extensions.Contains( "gl_EXT_timer_query" ) ) { + if( extensions.Contains( "gl_EXT_timer_query" ) ) + { EXT_timer_query = true; extensions.Remove( "glEXT_timer_query" ); } - if( extensions.Contains( "gl_EXT_transform_feedback" ) ) { + if( extensions.Contains( "gl_EXT_transform_feedback" ) ) + { EXT_transform_feedback = true; extensions.Remove( "glEXT_transform_feedback" ); } - if( extensions.Contains( "gl_EXT_vertex_array" ) ) { + if( extensions.Contains( "gl_EXT_vertex_array" ) ) + { EXT_vertex_array = true; extensions.Remove( "glEXT_vertex_array" ); } - if( extensions.Contains( "gl_EXT_vertex_array_bgra" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_vertex_shader" ) ) + { EXT_vertex_shader = true; extensions.Remove( "glEXT_vertex_shader" ); } - if( extensions.Contains( "gl_EXT_vertex_weighting" ) ) { + if( extensions.Contains( "gl_EXT_vertex_weighting" ) ) + { EXT_vertex_weighting = true; extensions.Remove( "glEXT_vertex_weighting" ); } - if( extensions.Contains( "gl_EXT_win32_keyed_mutex" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_window_rectangles" ) ) + { EXT_window_rectangles = true; extensions.Remove( "glEXT_window_rectangles" ); } - if( extensions.Contains( "gl_EXT_x11_sync_object" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_GREMEDY_frame_terminator" ) ) + { GREMEDY_frame_terminator = true; extensions.Remove( "glGREMEDY_frame_terminator" ); } - if( extensions.Contains( "gl_GREMEDY_string_marker" ) ) { + if( extensions.Contains( "gl_GREMEDY_string_marker" ) ) + { GREMEDY_string_marker = true; extensions.Remove( "glGREMEDY_string_marker" ); } - if( extensions.Contains( "gl_HP_convolution_border_modes" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_HP_image_transform" ) ) + { HP_image_transform = true; extensions.Remove( "glHP_image_transform" ); } - if( extensions.Contains( "gl_HP_occlusion_test" ) ) { + if( extensions.Contains( "gl_HP_occlusion_test" ) ) + { HP_occlusion_test = true; extensions.Remove( "glHP_occlusion_test" ); } - if( extensions.Contains( "gl_HP_texture_lighting" ) ) { + if( extensions.Contains( "gl_HP_texture_lighting" ) ) + { HP_texture_lighting = true; extensions.Remove( "glHP_texture_lighting" ); } - if( extensions.Contains( "gl_IBM_cull_vertex" ) ) { + if( extensions.Contains( "gl_IBM_cull_vertex" ) ) + { IBM_cull_vertex = true; extensions.Remove( "glIBM_cull_vertex" ); } - if( extensions.Contains( "gl_IBM_multimode_draw_arrays" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_IBM_rasterpos_clip" ) ) + { IBM_rasterpos_clip = true; extensions.Remove( "glIBM_rasterpos_clip" ); } - if( extensions.Contains( "gl_IBM_static_data" ) ) { + if( extensions.Contains( "gl_IBM_static_data" ) ) + { IBM_static_data = true; extensions.Remove( "glIBM_static_data" ); } - if( extensions.Contains( "gl_IBM_texture_mirrored_repeat" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_INGR_color_clamp" ) ) + { INGR_color_clamp = true; extensions.Remove( "glINGR_color_clamp" ); } - if( extensions.Contains( "gl_INGR_interlace_read" ) ) { + if( extensions.Contains( "gl_INGR_interlace_read" ) ) + { INGR_interlace_read = true; extensions.Remove( "glINGR_interlace_read" ); } - if( extensions.Contains( "gl_INTEL_blackhole_render" ) ) { + if( extensions.Contains( "gl_INTEL_blackhole_render" ) ) + { INTEL_blackhole_render = true; extensions.Remove( "glINTEL_blackhole_render" ); } - if( extensions.Contains( "gl_INTEL_conservative_rasterization" ) ) { + if( extensions.Contains( "gl_INTEL_conservative_rasterization" ) ) + { INTEL_conservative_rasterization = true; extensions.Remove( "glINTEL_conservative_rasterization" ); } - if( extensions.Contains( "gl_INTEL_fragment_shader_ordering" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_INTEL_framebuffer_CMAA" ) ) + { INTEL_framebuffer_CMAA = true; extensions.Remove( "glINTEL_framebuffer_CMAA" ); } - if( extensions.Contains( "gl_INTEL_map_texture" ) ) { + if( extensions.Contains( "gl_INTEL_map_texture" ) ) + { INTEL_map_texture = true; extensions.Remove( "glINTEL_map_texture" ); } - if( extensions.Contains( "gl_INTEL_parallel_arrays" ) ) { + if( extensions.Contains( "gl_INTEL_parallel_arrays" ) ) + { INTEL_parallel_arrays = true; extensions.Remove( "glINTEL_parallel_arrays" ); } - if( extensions.Contains( "gl_INTEL_performance_query" ) ) { + if( extensions.Contains( "gl_INTEL_performance_query" ) ) + { INTEL_performance_query = true; extensions.Remove( "glINTEL_performance_query" ); } - if( extensions.Contains( "gl_KHR_blend_equation_advanced" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_KHR_debug" ) ) + { KHR_debug = true; extensions.Remove( "glKHR_debug" ); } - if( extensions.Contains( "gl_KHR_no_error" ) ) { + if( extensions.Contains( "gl_KHR_no_error" ) ) + { KHR_no_error = true; extensions.Remove( "glKHR_no_error" ); } - if( extensions.Contains( "gl_KHR_parallel_shader_compile" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_KHR_robustness" ) ) + { KHR_robustness = true; extensions.Remove( "glKHR_robustness" ); } - if( extensions.Contains( "gl_KHR_shader_subgroup" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_MESAX_texture_stack" ) ) + { MESAX_texture_stack = true; extensions.Remove( "glMESAX_texture_stack" ); } - if( extensions.Contains( "gl_MESA_framebuffer_flip_x" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_MESA_pack_invert" ) ) + { MESA_pack_invert = true; extensions.Remove( "glMESA_pack_invert" ); } - if( extensions.Contains( "gl_MESA_program_binary_formats" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_MESA_resize_buffers" ) ) + { MESA_resize_buffers = true; extensions.Remove( "glMESA_resize_buffers" ); } - if( extensions.Contains( "gl_MESA_shader_integer_functions" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_MESA_window_pos" ) ) + { MESA_window_pos = true; extensions.Remove( "glMESA_window_pos" ); } - if( extensions.Contains( "gl_MESA_ycbcr_texture" ) ) { + 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" ) ) { + 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" ); + extensions.Remove( "glNVX_blend_equation_advanced_multi_draw_buffers" ); } - if( extensions.Contains( "gl_NVX_conditional_render" ) ) { + if( extensions.Contains( "gl_NVX_conditional_render" ) ) + { NVX_conditional_render = true; extensions.Remove( "glNVX_conditional_render" ); } - if( extensions.Contains( "gl_NVX_gpu_memory_info" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NVX_gpu_multicast2" ) ) + { NVX_gpu_multicast2 = true; extensions.Remove( "glNVX_gpu_multicast2" ); } - if( extensions.Contains( "gl_NVX_linked_gpu_multicast" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_bindless_texture" ) ) + { NV_bindless_texture = true; extensions.Remove( "glNV_bindless_texture" ); } - if( extensions.Contains( "gl_NV_blend_equation_advanced" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_command_list" ) ) + { NV_command_list = true; extensions.Remove( "glNV_command_list" ); } - if( extensions.Contains( "gl_NV_compute_program5" ) ) { + if( extensions.Contains( "gl_NV_compute_program5" ) ) + { NV_compute_program5 = true; extensions.Remove( "glNV_compute_program5" ); } - if( extensions.Contains( "gl_NV_compute_shader_derivatives" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_conditional_render" ) ) + { NV_conditional_render = true; extensions.Remove( "glNV_conditional_render" ); } - if( extensions.Contains( "gl_NV_conservative_raster" ) ) { + if( extensions.Contains( "gl_NV_conservative_raster" ) ) + { NV_conservative_raster = true; extensions.Remove( "glNV_conservative_raster" ); } - if( extensions.Contains( "gl_NV_conservative_raster_dilate" ) ) { + 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" ) ) { + 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" ) ) { + 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" ); + extensions.Remove( "glNV_conservative_raster_pre_snap_triangles" ); } - if( extensions.Contains( - "gl_NV_conservative_raster_underestimation" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_copy_image" ) ) + { NV_copy_image = true; extensions.Remove( "glNV_copy_image" ); } - if( extensions.Contains( "gl_NV_deep_texture3D" ) ) { + if( extensions.Contains( "gl_NV_deep_texture3D" ) ) + { NV_deep_texture3D = true; extensions.Remove( "glNV_deep_texture3D" ); } - if( extensions.Contains( "gl_NV_depth_buffer_float" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_depth_clamp" ) ) + { NV_depth_clamp = true; extensions.Remove( "glNV_depth_clamp" ); } - if( extensions.Contains( "gl_NV_draw_texture" ) ) { + if( extensions.Contains( "gl_NV_draw_texture" ) ) + { NV_draw_texture = true; extensions.Remove( "glNV_draw_texture" ); } - if( extensions.Contains( "gl_NV_draw_vulkan_image" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_evaluators" ) ) + { NV_evaluators = true; extensions.Remove( "glNV_evaluators" ); } - if( extensions.Contains( "gl_NV_explicit_multisample" ) ) { + if( extensions.Contains( "gl_NV_explicit_multisample" ) ) + { NV_explicit_multisample = true; extensions.Remove( "glNV_explicit_multisample" ); } - if( extensions.Contains( "gl_NV_fence" ) ) { + if( extensions.Contains( "gl_NV_fence" ) ) + { NV_fence = true; extensions.Remove( "glNV_fence" ); } - if( extensions.Contains( "gl_NV_fill_rectangle" ) ) { + if( extensions.Contains( "gl_NV_fill_rectangle" ) ) + { NV_fill_rectangle = true; extensions.Remove( "glNV_fill_rectangle" ); } - if( extensions.Contains( "gl_NV_float_buffer" ) ) { + if( extensions.Contains( "gl_NV_float_buffer" ) ) + { NV_float_buffer = true; extensions.Remove( "glNV_float_buffer" ); } - if( extensions.Contains( "gl_NV_fog_distance" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_fragment_program" ) ) + { NV_fragment_program = true; extensions.Remove( "glNV_fragment_program" ); } - if( extensions.Contains( "gl_NV_fragment_program2" ) ) { + if( extensions.Contains( "gl_NV_fragment_program2" ) ) + { NV_fragment_program2 = true; extensions.Remove( "glNV_fragment_program2" ); } - if( extensions.Contains( "gl_NV_fragment_program4" ) ) { + if( extensions.Contains( "gl_NV_fragment_program4" ) ) + { NV_fragment_program4 = true; extensions.Remove( "glNV_fragment_program4" ); } - if( extensions.Contains( "gl_NV_fragment_program_option" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_geometry_program4" ) ) + { NV_geometry_program4 = true; extensions.Remove( "glNV_geometry_program4" ); } - if( extensions.Contains( "gl_NV_geometry_shader4" ) ) { + if( extensions.Contains( "gl_NV_geometry_shader4" ) ) + { NV_geometry_shader4 = true; extensions.Remove( "glNV_geometry_shader4" ); } - if( extensions.Contains( "gl_NV_geometry_shader_passthrough" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_gpu_multicast" ) ) + { NV_gpu_multicast = true; extensions.Remove( "glNV_gpu_multicast" ); } - if( extensions.Contains( "gl_NV_gpu_program4" ) ) { + if( extensions.Contains( "gl_NV_gpu_program4" ) ) + { NV_gpu_program4 = true; extensions.Remove( "glNV_gpu_program4" ); } - if( extensions.Contains( "gl_NV_gpu_program5" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_gpu_shader5" ) ) + { NV_gpu_shader5 = true; extensions.Remove( "glNV_gpu_shader5" ); } - if( extensions.Contains( "gl_NV_half_float" ) ) { + if( extensions.Contains( "gl_NV_half_float" ) ) + { NV_half_float = true; extensions.Remove( "glNV_half_float" ); } - if( extensions.Contains( "gl_NV_internalformat_sample_query" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_memory_attachment" ) ) + { NV_memory_attachment = true; extensions.Remove( "glNV_memory_attachment" ); } - if( extensions.Contains( "gl_NV_memory_object_sparse" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_mesh_shader" ) ) + { NV_mesh_shader = true; extensions.Remove( "glNV_mesh_shader" ); } - if( extensions.Contains( "gl_NV_multisample_coverage" ) ) { + if( extensions.Contains( "gl_NV_multisample_coverage" ) ) + { NV_multisample_coverage = true; extensions.Remove( "glNV_multisample_coverage" ); } - if( extensions.Contains( "gl_NV_multisample_filter_hint" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_occlusion_query" ) ) + { NV_occlusion_query = true; extensions.Remove( "glNV_occlusion_query" ); } - if( extensions.Contains( "gl_NV_packed_depth_stencil" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_point_sprite" ) ) + { NV_point_sprite = true; extensions.Remove( "glNV_point_sprite" ); } - if( extensions.Contains( "gl_NV_present_video" ) ) { + if( extensions.Contains( "gl_NV_present_video" ) ) + { NV_present_video = true; extensions.Remove( "glNV_present_video" ); } - if( extensions.Contains( "gl_NV_primitive_restart" ) ) { + if( extensions.Contains( "gl_NV_primitive_restart" ) ) + { NV_primitive_restart = true; extensions.Remove( "glNV_primitive_restart" ); } - if( extensions.Contains( "gl_NV_primitive_shading_rate" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_query_resource" ) ) + { NV_query_resource = true; extensions.Remove( "glNV_query_resource" ); } - if( extensions.Contains( "gl_NV_query_resource_tag" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_register_combiners" ) ) + { NV_register_combiners = true; extensions.Remove( "glNV_register_combiners" ); } - if( extensions.Contains( "gl_NV_register_combiners2" ) ) { + if( extensions.Contains( "gl_NV_register_combiners2" ) ) + { NV_register_combiners2 = true; extensions.Remove( "glNV_register_combiners2" ); } - if( extensions.Contains( "gl_NV_representative_fragment_test" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_scissor_exclusive" ) ) + { NV_scissor_exclusive = true; extensions.Remove( "glNV_scissor_exclusive" ); } - if( extensions.Contains( "gl_NV_shader_atomic_counters" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_tessellation_program5" ) ) + { NV_tessellation_program5 = true; extensions.Remove( "glNV_tessellation_program5" ); } - if( extensions.Contains( "gl_NV_texgen_emboss" ) ) { + if( extensions.Contains( "gl_NV_texgen_emboss" ) ) + { NV_texgen_emboss = true; extensions.Remove( "glNV_texgen_emboss" ); } - if( extensions.Contains( "gl_NV_texgen_reflection" ) ) { + if( extensions.Contains( "gl_NV_texgen_reflection" ) ) + { NV_texgen_reflection = true; extensions.Remove( "glNV_texgen_reflection" ); } - if( extensions.Contains( "gl_NV_texture_barrier" ) ) { + if( extensions.Contains( "gl_NV_texture_barrier" ) ) + { NV_texture_barrier = true; extensions.Remove( "glNV_texture_barrier" ); } - if( extensions.Contains( "gl_NV_texture_compression_vtc" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_texture_multisample" ) ) + { NV_texture_multisample = true; extensions.Remove( "glNV_texture_multisample" ); } - if( extensions.Contains( "gl_NV_texture_rectangle" ) ) { + if( extensions.Contains( "gl_NV_texture_rectangle" ) ) + { NV_texture_rectangle = true; extensions.Remove( "glNV_texture_rectangle" ); } - if( extensions.Contains( "gl_NV_texture_rectangle_compressed" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_texture_shader" ) ) + { NV_texture_shader = true; extensions.Remove( "glNV_texture_shader" ); } - if( extensions.Contains( "gl_NV_texture_shader2" ) ) { + if( extensions.Contains( "gl_NV_texture_shader2" ) ) + { NV_texture_shader2 = true; extensions.Remove( "glNV_texture_shader2" ); } - if( extensions.Contains( "gl_NV_texture_shader3" ) ) { + if( extensions.Contains( "gl_NV_texture_shader3" ) ) + { NV_texture_shader3 = true; extensions.Remove( "glNV_texture_shader3" ); } - if( extensions.Contains( "gl_NV_timeline_semaphore" ) ) { + if( extensions.Contains( "gl_NV_timeline_semaphore" ) ) + { NV_timeline_semaphore = true; extensions.Remove( "glNV_timeline_semaphore" ); } - if( extensions.Contains( "gl_NV_transform_feedback" ) ) { + if( extensions.Contains( "gl_NV_transform_feedback" ) ) + { NV_transform_feedback = true; extensions.Remove( "glNV_transform_feedback" ); } - if( extensions.Contains( "gl_NV_transform_feedback2" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_vdpau_interop" ) ) + { NV_vdpau_interop = true; extensions.Remove( "glNV_vdpau_interop" ); } - if( extensions.Contains( "gl_NV_vdpau_interop2" ) ) { + if( extensions.Contains( "gl_NV_vdpau_interop2" ) ) + { NV_vdpau_interop2 = true; extensions.Remove( "glNV_vdpau_interop2" ); } - if( extensions.Contains( "gl_NV_vertex_array_range" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_vertex_program" ) ) + { NV_vertex_program = true; extensions.Remove( "glNV_vertex_program" ); } - if( extensions.Contains( "gl_NV_vertex_program1_1" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_vertex_program2" ) ) + { NV_vertex_program2 = true; extensions.Remove( "glNV_vertex_program2" ); } - if( extensions.Contains( "gl_NV_vertex_program2_option" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_vertex_program3" ) ) + { NV_vertex_program3 = true; extensions.Remove( "glNV_vertex_program3" ); } - if( extensions.Contains( "gl_NV_vertex_program4" ) ) { + if( extensions.Contains( "gl_NV_vertex_program4" ) ) + { NV_vertex_program4 = true; extensions.Remove( "glNV_vertex_program4" ); } - if( extensions.Contains( "gl_NV_video_capture" ) ) { + if( extensions.Contains( "gl_NV_video_capture" ) ) + { NV_video_capture = true; extensions.Remove( "glNV_video_capture" ); } - if( extensions.Contains( "gl_NV_viewport_array2" ) ) { + if( extensions.Contains( "gl_NV_viewport_array2" ) ) + { NV_viewport_array2 = true; extensions.Remove( "glNV_viewport_array2" ); } - if( extensions.Contains( "gl_NV_viewport_swizzle" ) ) { + if( extensions.Contains( "gl_NV_viewport_swizzle" ) ) + { NV_viewport_swizzle = true; extensions.Remove( "glNV_viewport_swizzle" ); } - if( extensions.Contains( "gl_OES_byte_coordinates" ) ) { + if( extensions.Contains( "gl_OES_byte_coordinates" ) ) + { OES_byte_coordinates = true; extensions.Remove( "glOES_byte_coordinates" ); } - if( extensions.Contains( "gl_OES_compressed_paletted_texture" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_OES_fixed_point" ) ) + { OES_fixed_point = true; extensions.Remove( "glOES_fixed_point" ); } - if( extensions.Contains( "gl_OES_query_matrix" ) ) { + if( extensions.Contains( "gl_OES_query_matrix" ) ) + { OES_query_matrix = true; extensions.Remove( "glOES_query_matrix" ); } - if( extensions.Contains( "gl_OES_read_format" ) ) { + if( extensions.Contains( "gl_OES_read_format" ) ) + { OES_read_format = true; extensions.Remove( "glOES_read_format" ); } - if( extensions.Contains( "gl_OES_single_precision" ) ) { + if( extensions.Contains( "gl_OES_single_precision" ) ) + { OES_single_precision = true; extensions.Remove( "glOES_single_precision" ); } - if( extensions.Contains( "gl_OML_interlace" ) ) { + if( extensions.Contains( "gl_OML_interlace" ) ) + { OML_interlace = true; extensions.Remove( "glOML_interlace" ); } - if( extensions.Contains( "gl_OML_resample" ) ) { + if( extensions.Contains( "gl_OML_resample" ) ) + { OML_resample = true; extensions.Remove( "glOML_resample" ); } - if( extensions.Contains( "gl_OML_subsample" ) ) { + if( extensions.Contains( "gl_OML_subsample" ) ) + { OML_subsample = true; extensions.Remove( "glOML_subsample" ); } - if( extensions.Contains( "gl_OVR_multiview" ) ) { + if( extensions.Contains( "gl_OVR_multiview" ) ) + { OVR_multiview = true; extensions.Remove( "glOVR_multiview" ); } - if( extensions.Contains( "gl_OVR_multiview2" ) ) { + if( extensions.Contains( "gl_OVR_multiview2" ) ) + { OVR_multiview2 = true; extensions.Remove( "glOVR_multiview2" ); } - if( extensions.Contains( "gl_PGI_misc_hints" ) ) { + if( extensions.Contains( "gl_PGI_misc_hints" ) ) + { PGI_misc_hints = true; extensions.Remove( "glPGI_misc_hints" ); } - if( extensions.Contains( "gl_PGI_vertex_hints" ) ) { + if( extensions.Contains( "gl_PGI_vertex_hints" ) ) + { PGI_vertex_hints = true; extensions.Remove( "glPGI_vertex_hints" ); } - if( extensions.Contains( "gl_REND_screen_coordinates" ) ) { + if( extensions.Contains( "gl_REND_screen_coordinates" ) ) + { REND_screen_coordinates = true; extensions.Remove( "glREND_screen_coordinates" ); } - if( extensions.Contains( "gl_S3_s3tc" ) ) { + if( extensions.Contains( "gl_S3_s3tc" ) ) + { S3_s3tc = true; extensions.Remove( "glS3_s3tc" ); } - if( extensions.Contains( "gl_SGIS_detail_texture" ) ) { + if( extensions.Contains( "gl_SGIS_detail_texture" ) ) + { SGIS_detail_texture = true; extensions.Remove( "glSGIS_detail_texture" ); } - if( extensions.Contains( "gl_SGIS_fog_function" ) ) { + if( extensions.Contains( "gl_SGIS_fog_function" ) ) + { SGIS_fog_function = true; extensions.Remove( "glSGIS_fog_function" ); } - if( extensions.Contains( "gl_SGIS_generate_mipmap" ) ) { + if( extensions.Contains( "gl_SGIS_generate_mipmap" ) ) + { SGIS_generate_mipmap = true; extensions.Remove( "glSGIS_generate_mipmap" ); } - if( extensions.Contains( "gl_SGIS_multisample" ) ) { + if( extensions.Contains( "gl_SGIS_multisample" ) ) + { SGIS_multisample = true; extensions.Remove( "glSGIS_multisample" ); } - if( extensions.Contains( "gl_SGIS_pixel_texture" ) ) { + if( extensions.Contains( "gl_SGIS_pixel_texture" ) ) + { SGIS_pixel_texture = true; extensions.Remove( "glSGIS_pixel_texture" ); } - if( extensions.Contains( "gl_SGIS_point_line_texgen" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_SGIS_point_parameters" ) ) + { SGIS_point_parameters = true; extensions.Remove( "glSGIS_point_parameters" ); } - if( extensions.Contains( "gl_SGIS_sharpen_texture" ) ) { + if( extensions.Contains( "gl_SGIS_sharpen_texture" ) ) + { SGIS_sharpen_texture = true; extensions.Remove( "glSGIS_sharpen_texture" ); } - if( extensions.Contains( "gl_SGIS_texture4D" ) ) { + if( extensions.Contains( "gl_SGIS_texture4D" ) ) + { SGIS_texture4D = true; extensions.Remove( "glSGIS_texture4D" ); } - if( extensions.Contains( "gl_SGIS_texture_border_clamp" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_SGIS_texture_filter4" ) ) + { SGIS_texture_filter4 = true; extensions.Remove( "glSGIS_texture_filter4" ); } - if( extensions.Contains( "gl_SGIS_texture_lod" ) ) { + if( extensions.Contains( "gl_SGIS_texture_lod" ) ) + { SGIS_texture_lod = true; extensions.Remove( "glSGIS_texture_lod" ); } - if( extensions.Contains( "gl_SGIS_texture_select" ) ) { + if( extensions.Contains( "gl_SGIS_texture_select" ) ) + { SGIS_texture_select = true; extensions.Remove( "glSGIS_texture_select" ); } - if( extensions.Contains( "gl_SGIX_async" ) ) { + if( extensions.Contains( "gl_SGIX_async" ) ) + { SGIX_async = true; extensions.Remove( "glSGIX_async" ); } - if( extensions.Contains( "gl_SGIX_async_histogram" ) ) { + if( extensions.Contains( "gl_SGIX_async_histogram" ) ) + { SGIX_async_histogram = true; extensions.Remove( "glSGIX_async_histogram" ); } - if( extensions.Contains( "gl_SGIX_async_pixel" ) ) { + if( extensions.Contains( "gl_SGIX_async_pixel" ) ) + { SGIX_async_pixel = true; extensions.Remove( "glSGIX_async_pixel" ); } - if( extensions.Contains( "gl_SGIX_blend_alpha_minmax" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_SGIX_calligraphic_fragment" ) ) + { SGIX_calligraphic_fragment = true; extensions.Remove( "glSGIX_calligraphic_fragment" ); } - if( extensions.Contains( "gl_SGIX_clipmap" ) ) { + if( extensions.Contains( "gl_SGIX_clipmap" ) ) + { SGIX_clipmap = true; extensions.Remove( "glSGIX_clipmap" ); } - if( extensions.Contains( "gl_SGIX_convolution_accuracy" ) ) { + if( extensions.Contains( "gl_SGIX_convolution_accuracy" ) ) + { SGIX_convolution_accuracy = true; extensions.Remove( "glSGIX_convolution_accuracy" ); } - if( extensions.Contains( "gl_SGIX_depth_pass_instrument" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_SGIX_depth_texture" ) ) + { SGIX_depth_texture = true; extensions.Remove( "glSGIX_depth_texture" ); } - if( extensions.Contains( "gl_SGIX_flush_raster" ) ) { + if( extensions.Contains( "gl_SGIX_flush_raster" ) ) + { SGIX_flush_raster = true; extensions.Remove( "glSGIX_flush_raster" ); } - if( extensions.Contains( "gl_SGIX_fog_offset" ) ) { + if( extensions.Contains( "gl_SGIX_fog_offset" ) ) + { SGIX_fog_offset = true; extensions.Remove( "glSGIX_fog_offset" ); } - if( extensions.Contains( "gl_SGIX_fragment_lighting" ) ) { + if( extensions.Contains( "gl_SGIX_fragment_lighting" ) ) + { SGIX_fragment_lighting = true; extensions.Remove( "glSGIX_fragment_lighting" ); } - if( extensions.Contains( "gl_SGIX_framezoom" ) ) { + if( extensions.Contains( "gl_SGIX_framezoom" ) ) + { SGIX_framezoom = true; extensions.Remove( "glSGIX_framezoom" ); } - if( extensions.Contains( "gl_SGIX_igloo_interface" ) ) { + if( extensions.Contains( "gl_SGIX_igloo_interface" ) ) + { SGIX_igloo_interface = true; extensions.Remove( "glSGIX_igloo_interface" ); } - if( extensions.Contains( "gl_SGIX_instruments" ) ) { + if( extensions.Contains( "gl_SGIX_instruments" ) ) + { SGIX_instruments = true; extensions.Remove( "glSGIX_instruments" ); } - if( extensions.Contains( "gl_SGIX_interlace" ) ) { + if( extensions.Contains( "gl_SGIX_interlace" ) ) + { SGIX_interlace = true; extensions.Remove( "glSGIX_interlace" ); } - if( extensions.Contains( "gl_SGIX_ir_instrument1" ) ) { + if( extensions.Contains( "gl_SGIX_ir_instrument1" ) ) + { SGIX_ir_instrument1 = true; extensions.Remove( "glSGIX_ir_instrument1" ); } - if( extensions.Contains( "gl_SGIX_list_priority" ) ) { + if( extensions.Contains( "gl_SGIX_list_priority" ) ) + { SGIX_list_priority = true; extensions.Remove( "glSGIX_list_priority" ); } - if( extensions.Contains( "gl_SGIX_pixel_texture" ) ) { + if( extensions.Contains( "gl_SGIX_pixel_texture" ) ) + { SGIX_pixel_texture = true; extensions.Remove( "glSGIX_pixel_texture" ); } - if( extensions.Contains( "gl_SGIX_pixel_tiles" ) ) { + if( extensions.Contains( "gl_SGIX_pixel_tiles" ) ) + { SGIX_pixel_tiles = true; extensions.Remove( "glSGIX_pixel_tiles" ); } - if( extensions.Contains( "gl_SGIX_polynomial_ffd" ) ) { + if( extensions.Contains( "gl_SGIX_polynomial_ffd" ) ) + { SGIX_polynomial_ffd = true; extensions.Remove( "glSGIX_polynomial_ffd" ); } - if( extensions.Contains( "gl_SGIX_reference_plane" ) ) { + if( extensions.Contains( "gl_SGIX_reference_plane" ) ) + { SGIX_reference_plane = true; extensions.Remove( "glSGIX_reference_plane" ); } - if( extensions.Contains( "gl_SGIX_resample" ) ) { + if( extensions.Contains( "gl_SGIX_resample" ) ) + { SGIX_resample = true; extensions.Remove( "glSGIX_resample" ); } - if( extensions.Contains( "gl_SGIX_scalebias_hint" ) ) { + if( extensions.Contains( "gl_SGIX_scalebias_hint" ) ) + { SGIX_scalebias_hint = true; extensions.Remove( "glSGIX_scalebias_hint" ); } - if( extensions.Contains( "gl_SGIX_shadow" ) ) { + if( extensions.Contains( "gl_SGIX_shadow" ) ) + { SGIX_shadow = true; extensions.Remove( "glSGIX_shadow" ); } - if( extensions.Contains( "gl_SGIX_shadow_ambient" ) ) { + if( extensions.Contains( "gl_SGIX_shadow_ambient" ) ) + { SGIX_shadow_ambient = true; extensions.Remove( "glSGIX_shadow_ambient" ); } - if( extensions.Contains( "gl_SGIX_sprite" ) ) { + if( extensions.Contains( "gl_SGIX_sprite" ) ) + { SGIX_sprite = true; extensions.Remove( "glSGIX_sprite" ); } - if( extensions.Contains( "gl_SGIX_subsample" ) ) { + if( extensions.Contains( "gl_SGIX_subsample" ) ) + { SGIX_subsample = true; extensions.Remove( "glSGIX_subsample" ); } - if( extensions.Contains( "gl_SGIX_tag_sample_buffer" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_SGIX_vertex_preclip" ) ) + { SGIX_vertex_preclip = true; extensions.Remove( "glSGIX_vertex_preclip" ); } - if( extensions.Contains( "gl_SGIX_ycrcb" ) ) { + if( extensions.Contains( "gl_SGIX_ycrcb" ) ) + { SGIX_ycrcb = true; extensions.Remove( "glSGIX_ycrcb" ); } - if( extensions.Contains( "gl_SGIX_ycrcb_subsample" ) ) { + if( extensions.Contains( "gl_SGIX_ycrcb_subsample" ) ) + { SGIX_ycrcb_subsample = true; extensions.Remove( "glSGIX_ycrcb_subsample" ); } - if( extensions.Contains( "gl_SGIX_ycrcba" ) ) { + if( extensions.Contains( "gl_SGIX_ycrcba" ) ) + { SGIX_ycrcba = true; extensions.Remove( "glSGIX_ycrcba" ); } - if( extensions.Contains( "gl_SGI_color_matrix" ) ) { + if( extensions.Contains( "gl_SGI_color_matrix" ) ) + { SGI_color_matrix = true; extensions.Remove( "glSGI_color_matrix" ); } - if( extensions.Contains( "gl_SGI_color_table" ) ) { + if( extensions.Contains( "gl_SGI_color_table" ) ) + { SGI_color_table = true; extensions.Remove( "glSGI_color_table" ); } - if( extensions.Contains( "gl_SGI_texture_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" ) ) { + if( extensions.Contains( "gl_SUNX_constant_data" ) ) + { SUNX_constant_data = true; extensions.Remove( "glSUNX_constant_data" ); } - if( extensions.Contains( "gl_SUN_convolution_border_modes" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_SUN_global_alpha" ) ) + { SUN_global_alpha = true; extensions.Remove( "glSUN_global_alpha" ); } - if( extensions.Contains( "gl_SUN_mesh_array" ) ) { + if( extensions.Contains( "gl_SUN_mesh_array" ) ) + { SUN_mesh_array = true; extensions.Remove( "glSUN_mesh_array" ); } - if( extensions.Contains( "gl_SUN_slice_accum" ) ) { + if( extensions.Contains( "gl_SUN_slice_accum" ) ) + { SUN_slice_accum = true; extensions.Remove( "glSUN_slice_accum" ); } - if( extensions.Contains( "gl_SUN_triangle_list" ) ) { + if( extensions.Contains( "gl_SUN_triangle_list" ) ) + { SUN_triangle_list = true; extensions.Remove( "glSUN_triangle_list" ); } - if( extensions.Contains( "gl_SUN_vertex" ) ) { + if( extensions.Contains( "gl_SUN_vertex" ) ) + { SUN_vertex = true; extensions.Remove( "glSUN_vertex" ); } - if( extensions.Contains( "gl_WIN_phong_shading" ) ) { + if( extensions.Contains( "gl_WIN_phong_shading" ) ) + { WIN_phong_shading = true; extensions.Remove( "glWIN_phong_shading" ); } - if( extensions.Contains( "gl_WIN_specular_fog" ) ) { + if( extensions.Contains( "gl_WIN_specular_fog" ) ) + { WIN_specular_fog = true; extensions.Remove( "glWIN_specular_fog" ); } @@ -2667,139 +3283,173 @@ namespace StgSharp.Graphics.OpenGL #endregion checkGLextensions } - internal static void CheckCoreVersion( - int majorVersion, - int minorVersion ) + 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 ) ) ) { + if( ( majorVersion >= 1 ) || ( ( majorVersion == 1 ) && ( minorVersion == 0 ) ) ) + { core10 = true; - } else { + } else + { goto log; } - if( ( majorVersion >= 1 ) || ( ( majorVersion == 1 ) && ( minorVersion == 1 ) ) ) { + if( ( majorVersion >= 1 ) || ( ( majorVersion == 1 ) && ( minorVersion == 1 ) ) ) + { core11 = true; - } else { + } else + { goto log; } - if( ( majorVersion >= 1 ) || ( ( majorVersion == 1 ) && ( minorVersion == 2 ) ) ) { + if( ( majorVersion >= 1 ) || ( ( majorVersion == 1 ) && ( minorVersion == 2 ) ) ) + { core12 = true; - } else { + } else + { goto log; } - if( ( majorVersion >= 1 ) || ( ( majorVersion == 1 ) && ( minorVersion == 3 ) ) ) { + if( ( majorVersion >= 1 ) || ( ( majorVersion == 1 ) && ( minorVersion == 3 ) ) ) + { core13 = true; - } else { + } else + { goto log; } - if( ( majorVersion >= 1 ) || ( ( majorVersion == 1 ) && ( minorVersion == 4 ) ) ) { + if( ( majorVersion >= 1 ) || ( ( majorVersion == 1 ) && ( minorVersion == 4 ) ) ) + { core14 = true; - } else { + } else + { goto log; } - if( ( majorVersion >= 1 ) || ( ( majorVersion == 1 ) && ( minorVersion == 5 ) ) ) { + if( ( majorVersion >= 1 ) || ( ( majorVersion == 1 ) && ( minorVersion == 5 ) ) ) + { core15 = true; - } else { + } else + { goto log; } - if( ( majorVersion >= 2 ) || ( ( majorVersion == 2 ) && ( minorVersion == 0 ) ) ) { + if( ( majorVersion >= 2 ) || ( ( majorVersion == 2 ) && ( minorVersion == 0 ) ) ) + { core20 = true; - } else { + } else + { goto log; } - if( ( majorVersion >= 2 ) || ( ( majorVersion == 2 ) && ( minorVersion == 1 ) ) ) { + if( ( majorVersion >= 2 ) || ( ( majorVersion == 2 ) && ( minorVersion == 1 ) ) ) + { core21 = true; - } else { + } else + { goto log; } - if( ( majorVersion >= 3 ) || ( ( majorVersion == 3 ) && ( minorVersion == 0 ) ) ) { + if( ( majorVersion >= 3 ) || ( ( majorVersion == 3 ) && ( minorVersion == 0 ) ) ) + { core30 = true; - } else { + } else + { goto log; } - if( ( majorVersion >= 3 ) || ( ( majorVersion == 3 ) && ( minorVersion == 1 ) ) ) { + if( ( majorVersion >= 3 ) || ( ( majorVersion == 3 ) && ( minorVersion == 1 ) ) ) + { core31 = true; - } else { + } else + { goto log; } - if( ( majorVersion >= 3 ) || ( ( majorVersion == 3 ) && ( minorVersion == 2 ) ) ) { + if( ( majorVersion >= 3 ) || ( ( majorVersion == 3 ) && ( minorVersion == 2 ) ) ) + { core32 = true; - } else { + } else + { goto log; } - if( ( majorVersion >= 3 ) || ( ( majorVersion == 3 ) && ( minorVersion == 3 ) ) ) { + if( ( majorVersion >= 3 ) || ( ( majorVersion == 3 ) && ( minorVersion == 3 ) ) ) + { core33 = true; - } else { + } else + { goto log; } - if( ( majorVersion >= 4 ) || ( ( majorVersion == 4 ) && ( minorVersion == 0 ) ) ) { + if( ( majorVersion >= 4 ) || ( ( majorVersion == 4 ) && ( minorVersion == 0 ) ) ) + { core40 = true; - } else { + } else + { goto log; } - if( ( majorVersion >= 4 ) || ( ( majorVersion == 4 ) && ( minorVersion == 1 ) ) ) { + if( ( majorVersion >= 4 ) || ( ( majorVersion == 4 ) && ( minorVersion == 1 ) ) ) + { core41 = true; - } else { + } else + { goto log; } - if( ( majorVersion >= 4 ) || ( ( majorVersion == 4 ) && ( minorVersion == 2 ) ) ) { + if( ( majorVersion >= 4 ) || ( ( majorVersion == 4 ) && ( minorVersion == 2 ) ) ) + { core42 = true; - } else { + } else + { goto log; } - if( ( majorVersion >= 4 ) || ( ( majorVersion == 4 ) && ( minorVersion == 3 ) ) ) { + if( ( majorVersion >= 4 ) || ( ( majorVersion == 4 ) && ( minorVersion == 3 ) ) ) + { core43 = true; - } else { + } else + { goto log; } - if( ( majorVersion >= 4 ) || ( ( majorVersion == 4 ) && ( minorVersion == 4 ) ) ) { + if( ( majorVersion >= 4 ) || ( ( majorVersion == 4 ) && ( minorVersion == 4 ) ) ) + { core44 = true; - } else { + } else + { goto log; } - if( ( majorVersion >= 4 ) || ( ( majorVersion == 4 ) && ( minorVersion == 5 ) ) ) { + if( ( majorVersion >= 4 ) || ( ( majorVersion == 4 ) && ( minorVersion == 5 ) ) ) + { core45 = true; - } else { + } else + { goto log; } - if( ( majorVersion >= 4 ) || ( ( majorVersion == 4 ) && ( minorVersion == 6 ) ) ) { + if( ( majorVersion >= 4 ) || ( ( majorVersion == 4 ) && ( minorVersion == 6 ) ) ) + { core46 = true; - } else { + } else + { goto log; } log: { - InternalIO.InternalWriteLog( - "Find core OpenGL version.", LogType.Info ); + InternalIO.InternalWriteLog( "Find core OpenGL version.", LogType.Info ); return; } } - internal static unsafe string GetExtensions( - this OpenglContext context ) + internal static unsafe string GetExtensions( this OpenglContext context ) { if( context.glGetString == null ) { return string.Empty; @@ -2810,14 +3460,16 @@ namespace StgSharp.Graphics.OpenGL [MethodImpl( MethodImplOptions.AggressiveInlining )] internal static T internalLoadAPI( IntPtr ptr ) where T: Delegate { - try { + try + { if( ptr == IntPtr.Zero ) { return null; } T func = Marshal.GetDelegateForFunctionPointer( ptr ); return func; } - catch( Exception ex ) { + catch( Exception ex ) + { InternalIO.InternalWriteLog( $"{$"Failed to convert the api {typeof(T).Name}.\n"}{ex.Message}", LogType.Warning ); @@ -2826,55 +3478,41 @@ namespace StgSharp.Graphics.OpenGL } internal static unsafe void LoadGLcore10( - OpenglContext* contextPtr, - delegate* load ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core10 ) { - InternalIO.InternalAppendLog( - "The core version 1.0 is not supported." ); + 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->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->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->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->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->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->glGetFloatv = ( delegate* )load( "glGetFloatv" ); + contextPtr->glGetIntegerv = ( delegate* )load( "glGetIntegerv" ); + contextPtr->glGetString = ( delegate* )load( "glGetString" ); contextPtr->glGetTexImage = ( delegate* )load( "glGetTexImage" ); contextPtr->glGetTexLevelParameterfv = ( delegate* )load( @@ -2886,31 +3524,20 @@ namespace StgSharp.Graphics.OpenGL contextPtr->glGetTexParameteriv = ( delegate* )load( "glGetTexParameteriv" ); contextPtr->glHint = ( delegate* )load( "glHint" ); - contextPtr->glIsEnabled = ( delegate* )load( - "glIsEnabled" ); - contextPtr->glLineWidth = ( delegate* )load( - "glLineWidth" ); + 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->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->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( @@ -2923,29 +3550,26 @@ namespace StgSharp.Graphics.OpenGL "glTexParameteri" ); contextPtr->glTexParameteriv = ( delegate* )load( "glTexParameteriv" ); - contextPtr->glViewport = ( delegate* )load( - "glViewport" ); + contextPtr->glViewport = ( delegate* )load( "glViewport" ); #endregion load - InternalIO.InternalAppendLog( - "Successfully load all OpenGL 1.0 APIs" ); + InternalIO.InternalAppendLog( "Successfully load all OpenGL 1.0 APIs" ); } internal static unsafe void LoadGLcore11( - OpenglContext* contextPtr, - delegate* load ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core11 ) { - InternalIO.InternalAppendLog( - "The core version 1.1 is not supported." ); + 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->glBindTexture = ( delegate* )load( "glBindTexture" ); contextPtr->glCopyTexImage1D = ( delegate* )load( "glCopyTexImage1D" ); contextPtr->glCopyTexImage2D = ( delegate* )load( @@ -2956,18 +3580,13 @@ namespace StgSharp.Graphics.OpenGL "glCopyTexSubImage2D" ); contextPtr->glDeleteTextures = ( delegate* )load( "glDeleteTextures" ); - contextPtr->glDrawArrays = ( delegate* )load( - "glDrawArrays" ); + 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->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( @@ -2975,17 +3594,16 @@ namespace StgSharp.Graphics.OpenGL #endregion load - InternalIO.InternalAppendLog( - "Successfully load all OpenGL 1.1 APIs" ); + InternalIO.InternalAppendLog( "Successfully load all OpenGL 1.1 APIs" ); } internal static unsafe void LoadGLcore12( - OpenglContext* contextPtr, - delegate* load ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core12 ) { - InternalIO.InternalAppendLog( - "The core version 1.2 is not supported." ); + if( !core12 ) + { + InternalIO.InternalAppendLog( "The core version 1.2 is not supported." ); throw new Exception( "Final Version" ); } @@ -3002,24 +3620,22 @@ namespace StgSharp.Graphics.OpenGL #endregion load - InternalIO.InternalAppendLog( - "Successfully load all OpenGL 1.2 APIs" ); + InternalIO.InternalAppendLog( "Successfully load all OpenGL 1.2 APIs" ); } internal static unsafe void LoadGLcore13( - OpenglContext* contextPtr, - delegate* load ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core13 ) { - InternalIO.InternalAppendLog( - "The core version 1.3 is not supported." ); + 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->glActiveTexture = ( delegate* )load( "glActiveTexture" ); contextPtr->glCompressedTexImage1D = ( delegate* )load( "glCompressedTexImage1D" ); contextPtr->glCompressedTexImage2D = ( delegate* )load( @@ -3039,17 +3655,16 @@ namespace StgSharp.Graphics.OpenGL #endregion load - InternalIO.InternalAppendLog( - "Successfully load all OpenGL 1.3 APIs" ); + InternalIO.InternalAppendLog( "Successfully load all OpenGL 1.3 APIs" ); } internal static unsafe void LoadGLcore14( - OpenglContext* contextPtr, - delegate* load ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core14 ) { - InternalIO.InternalAppendLog( - "The core version 1.4 is not supported." ); + if( !core14 ) + { + InternalIO.InternalAppendLog( "The core version 1.4 is not supported." ); throw new Exception( "Final Version" ); } @@ -3057,8 +3672,7 @@ namespace StgSharp.Graphics.OpenGL contextPtr->glBlendColor = ( delegate* )load( "glBlendColor" ); - contextPtr->glBlendEquation = ( delegate* )load( - "glBlendEquation" ); + contextPtr->glBlendEquation = ( delegate* )load( "glBlendEquation" ); contextPtr->glBlendFuncSeparate = ( delegate* )load( "glBlendFuncSeparate" ); contextPtr->glMultiDrawArrays = ( delegate* )load( @@ -3076,40 +3690,32 @@ namespace StgSharp.Graphics.OpenGL #endregion load - InternalIO.InternalAppendLog( - "Successfully load all OpenGL 1.4 APIs" ); + InternalIO.InternalAppendLog( "Successfully load all OpenGL 1.4 APIs" ); } internal static unsafe void LoadGLcore15( - OpenglContext* contextPtr, - delegate* load ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core15 ) { - InternalIO.InternalAppendLog( - "The core version 1.5 is not supported." ); + 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->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->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( @@ -3120,56 +3726,43 @@ namespace StgSharp.Graphics.OpenGL "glGetQueryObjectiv" ); contextPtr->glGetQueryObjectuiv = ( delegate* )load( "glGetQueryObjectuiv" ); - contextPtr->glGetQueryiv = ( delegate* )load( - "glGetQueryiv" ); - contextPtr->glIsBuffer = ( delegate* )load( - "glIsBuffer" ); + 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" ); + contextPtr->glMapBuffer = ( delegate* )load( "glMapBuffer" ); + contextPtr->glUnmapBuffer = ( delegate* )load( "glUnmapBuffer" ); #endregion load - InternalIO.InternalAppendLog( - "Successfully load all OpenGL 1.5 APIs" ); + InternalIO.InternalAppendLog( "Successfully load all OpenGL 1.5 APIs" ); } internal static unsafe void LoadGLcore20( - OpenglContext* contextPtr, - delegate* load ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core20 ) { - InternalIO.InternalAppendLog( - "The core version 2.0 is not supported." ); + 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->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->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->glDrawBuffers = ( delegate* )load( "glDrawBuffers" ); contextPtr->glEnableVertexAttribArray = ( delegate* )load( "glEnableVertexAttribArray" ); contextPtr->glGetActiveAttrib = ( delegate* )load( @@ -3188,8 +3781,7 @@ namespace StgSharp.Graphics.OpenGL "glGetShaderInfoLog" ); contextPtr->glGetShaderSource = ( delegate* )load( "glGetShaderSource" ); - contextPtr->glGetShaderiv = ( delegate* )load( - "glGetShaderiv" ); + contextPtr->glGetShaderiv = ( delegate* )load( "glGetShaderiv" ); contextPtr->glGetUniformLocation = ( delegate* )load( "glGetUniformLocation" ); contextPtr->glGetUniformfv = ( delegate* )load( @@ -3204,12 +3796,9 @@ namespace StgSharp.Graphics.OpenGL "glGetVertexAttribfv" ); contextPtr->glGetVertexAttribiv = ( delegate* )load( "glGetVertexAttribiv" ); - contextPtr->glIsProgram = ( delegate* )load( - "glIsProgram" ); - contextPtr->glIsShader = ( delegate* )load( - "glIsShader" ); - contextPtr->glLinkProgram = ( delegate* )load( - "glLinkProgram" ); + 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( @@ -3218,48 +3807,33 @@ namespace StgSharp.Graphics.OpenGL "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->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->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->glUniform4fv = ( delegate* )load( "glUniform4fv" ); contextPtr->glUniform4i = ( delegate* )load( "glUniform4i" ); - contextPtr->glUniform4iv = ( delegate* )load( - "glUniform4iv" ); + 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->glUseProgram = ( delegate* )load( "glUseProgram" ); + contextPtr->glValidateProgram = ( delegate* )load( "glValidateProgram" ); contextPtr->glVertexAttrib1d = ( delegate* )load( "glVertexAttrib1d" ); contextPtr->glVertexAttrib1dv = ( delegate* )load( @@ -3337,17 +3911,16 @@ namespace StgSharp.Graphics.OpenGL #endregion load - InternalIO.InternalAppendLog( - "Successfully load all OpenGL 2.0 APIs" ); + InternalIO.InternalAppendLog( "Successfully load all OpenGL 2.0 APIs" ); } internal static unsafe void LoadGLcore21( - OpenglContext* contextPtr, - delegate* load ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core21 ) { - InternalIO.InternalAppendLog( - "The core version 2.1 is not supported." ); + if( !core21 ) + { + InternalIO.InternalAppendLog( "The core version 2.1 is not supported." ); throw new Exception( "Final Version" ); } @@ -3368,17 +3941,16 @@ namespace StgSharp.Graphics.OpenGL #endregion load - InternalIO.InternalAppendLog( - "Successfully load all OpenGL 2.1 APIs" ); + InternalIO.InternalAppendLog( "Successfully load all OpenGL 2.1 APIs" ); } internal static unsafe void LoadGLcore30( - OpenglContext* contextPtr, - delegate* load ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core30 ) { - InternalIO.InternalAppendLog( - "The core version 3.0 is not supported." ); + if( !core30 ) + { + InternalIO.InternalAppendLog( "The core version 3.0 is not supported." ); throw new Exception( "Final Version" ); } @@ -3398,14 +3970,12 @@ namespace StgSharp.Graphics.OpenGL "glBindFramebuffer" ); contextPtr->glBindRenderbuffer = ( delegate* )load( "glBindRenderbuffer" ); - contextPtr->glBindVertexArray = ( delegate* )load( - "glBindVertexArray" ); + contextPtr->glBindVertexArray = ( delegate* )load( "glBindVertexArray" ); contextPtr->glBlitFramebuffer = ( delegate* )load( "glBlitFramebuffer" ); contextPtr->glCheckFramebufferStatus = ( delegate* )load( "glCheckFramebufferStatus" ); - contextPtr->glClampColor = ( delegate* )load( - "glClampColor" ); + contextPtr->glClampColor = ( delegate* )load( "glClampColor" ); contextPtr->glClearBufferfi = ( delegate* )load( "glClearBufferfi" ); contextPtr->glClearBufferfv = ( delegate* )load( @@ -3422,14 +3992,10 @@ namespace StgSharp.Graphics.OpenGL "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->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( @@ -3448,8 +4014,7 @@ namespace StgSharp.Graphics.OpenGL "glGenRenderbuffers" ); contextPtr->glGenVertexArrays = ( delegate* )load( "glGenVertexArrays" ); - contextPtr->glGenerateMipmap = ( delegate* )load( - "glGenerateMipmap" ); + contextPtr->glGenerateMipmap = ( delegate* )load( "glGenerateMipmap" ); contextPtr->glGetBooleani_v = ( delegate* )load( "glGetBooleani_v" ); contextPtr->glGetFragDataLocation = ( delegate* )load( @@ -3460,8 +4025,7 @@ namespace StgSharp.Graphics.OpenGL "glGetIntegeri_v" ); contextPtr->glGetRenderbufferParameteriv = ( delegate* )load( "glGetRenderbufferParameteriv" ); - contextPtr->glGetStringi = ( delegate* )load( - "glGetStringi" ); + contextPtr->glGetStringi = ( delegate* )load( "glGetStringi" ); contextPtr->glGetTexParameterIiv = ( delegate* )load( "glGetTexParameterIiv" ); contextPtr->glGetTexParameterIuiv = ( delegate* )load( @@ -3474,14 +4038,10 @@ namespace StgSharp.Graphics.OpenGL "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->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( @@ -3494,22 +4054,16 @@ namespace StgSharp.Graphics.OpenGL "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->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->glUniform3uiv = ( delegate* )load( "glUniform3uiv" ); contextPtr->glUniform4ui = ( delegate* )load( "glUniform4ui" ); - contextPtr->glUniform4uiv = ( delegate* )load( - "glUniform4uiv" ); + contextPtr->glUniform4uiv = ( delegate* )load( "glUniform4uiv" ); contextPtr->glVertexAttribI1i = ( delegate* )load( "glVertexAttribI1i" ); contextPtr->glVertexAttribI1iv = ( delegate* )load( @@ -3555,17 +4109,16 @@ namespace StgSharp.Graphics.OpenGL #endregion load - InternalIO.InternalAppendLog( - "Successfully load all OpenGL 3.0 APIs" ); + InternalIO.InternalAppendLog( "Successfully load all OpenGL 3.0 APIs" ); } internal static unsafe void LoadGLcore31( - OpenglContext* contextPtr, - delegate* load ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core31 ) { - InternalIO.InternalAppendLog( - "The core version 3.1 is not supported." ); + if( !core31 ) + { + InternalIO.InternalAppendLog( "The core version 3.1 is not supported." ); throw new Exception( "Final Version" ); } @@ -3597,24 +4150,22 @@ namespace StgSharp.Graphics.OpenGL "glGetUniformIndices" ); contextPtr->glPrimitiveRestartIndex = ( delegate* )load( "glPrimitiveRestartIndex" ); - contextPtr->glTexBuffer = ( delegate* )load( - "glTexBuffer" ); + contextPtr->glTexBuffer = ( delegate* )load( "glTexBuffer" ); contextPtr->glUniformBlockBinding = ( delegate* )load( "glUniformBlockBinding" ); #endregion load - InternalIO.InternalAppendLog( - "Successfully load all OpenGL 3.1 APIs" ); + InternalIO.InternalAppendLog( "Successfully load all OpenGL 3.1 APIs" ); } internal static unsafe void LoadGLcore32( - OpenglContext* contextPtr, - delegate* load ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core32 ) { - InternalIO.InternalAppendLog( - "The core version 3.2 is not supported." ); + if( !core32 ) + { + InternalIO.InternalAppendLog( "The core version 3.2 is not supported." ); throw new Exception( "Final Version" ); } @@ -3622,24 +4173,21 @@ namespace StgSharp.Graphics.OpenGL contextPtr->glClientWaitSync = ( delegate* )load( "glClientWaitSync" ); - contextPtr->glDeleteSync = ( delegate* )load( - "glDeleteSync" ); + 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->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->glGetInteger64v = ( delegate* )load( "glGetInteger64v" ); contextPtr->glGetMultisamplefv = ( delegate* )load( "glGetMultisamplefv" ); contextPtr->glGetSynciv = ( delegate* )load( @@ -3647,30 +4195,26 @@ namespace StgSharp.Graphics.OpenGL contextPtr->glIsSync = ( delegate* )load( "glIsSync" ); contextPtr->glMultiDrawElementsBaseVertex = ( delegate* )load( "glMultiDrawElementsBaseVertex" ); - contextPtr->glProvokingVertex = ( delegate* )load( - "glProvokingVertex" ); - contextPtr->glSampleMaski = ( delegate* )load( - "glSampleMaski" ); + 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" ); + contextPtr->glWaitSync = ( delegate* )load( "glWaitSync" ); #endregion load - InternalIO.InternalAppendLog( - "Successfully load all OpenGL 3.2 APIs" ); + InternalIO.InternalAppendLog( "Successfully load all OpenGL 3.2 APIs" ); } internal static unsafe void LoadGLcore33( - OpenglContext* contextPtr, - delegate* load ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core33 ) { - InternalIO.InternalAppendLog( - "The core version 3.3 is not supported." ); + if( !core33 ) + { + InternalIO.InternalAppendLog( "The core version 3.3 is not supported." ); throw new Exception( "Final Version" ); } @@ -3678,12 +4222,10 @@ namespace StgSharp.Graphics.OpenGL contextPtr->glBindFragDataLocationIndexed = ( delegate* )load( "glBindFragDataLocationIndexed" ); - contextPtr->glBindSampler = ( delegate* )load( - "glBindSampler" ); + contextPtr->glBindSampler = ( delegate* )load( "glBindSampler" ); contextPtr->glDeleteSamplers = ( delegate* )load( "glDeleteSamplers" ); - contextPtr->glGenSamplers = ( delegate* )load( - "glGenSamplers" ); + contextPtr->glGenSamplers = ( delegate* )load( "glGenSamplers" ); contextPtr->glGetFragDataIndex = ( delegate* )load( "glGetFragDataIndex" ); contextPtr->glGetQueryObjecti64v = ( delegate* )load( @@ -3698,10 +4240,8 @@ namespace StgSharp.Graphics.OpenGL "glGetSamplerParameterfv" ); contextPtr->glGetSamplerParameteriv = ( delegate* )load( "glGetSamplerParameteriv" ); - contextPtr->glIsSampler = ( delegate* )load( - "glIsSampler" ); - contextPtr->glQueryCounter = ( delegate* )load( - "glQueryCounter" ); + contextPtr->glIsSampler = ( delegate* )load( "glIsSampler" ); + contextPtr->glQueryCounter = ( delegate* )load( "glQueryCounter" ); contextPtr->glSamplerParameterIiv = ( delegate* )load( "glSamplerParameterIiv" ); contextPtr->glSamplerParameterIuiv = ( delegate* )load( @@ -3735,17 +4275,16 @@ namespace StgSharp.Graphics.OpenGL #endregion load - InternalIO.InternalAppendLog( - "Successfully load all OpenGL 3.3 APIs" ); + InternalIO.InternalAppendLog( "Successfully load all OpenGL 3.3 APIs" ); } internal static unsafe void LoadGLcore40( - OpenglContext* contextPtr, - delegate* load ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core40 ) { - InternalIO.InternalAppendLog( - "The core version 4.0 is not supported." ); + if( !core40 ) + { + InternalIO.InternalAppendLog( "The core version 4.0 is not supported." ); throw new Exception( "Final Version" ); } @@ -3757,12 +4296,10 @@ namespace StgSharp.Graphics.OpenGL "glBindTransformFeedback" ); contextPtr->glBlendEquationSeparatei = ( delegate* )load( "glBlendEquationSeparatei" ); - contextPtr->glBlendEquationi = ( delegate* )load( - "glBlendEquationi" ); + contextPtr->glBlendEquationi = ( delegate* )load( "glBlendEquationi" ); contextPtr->glBlendFuncSeparatei = ( delegate* )load( "glBlendFuncSeparatei" ); - contextPtr->glBlendFunci = ( delegate* )load( - "glBlendFunci" ); + contextPtr->glBlendFunci = ( delegate* )load( "glBlendFunci" ); contextPtr->glDeleteTransformFeedbacks = ( delegate* )load( "glDeleteTransformFeedbacks" ); contextPtr->glDrawArraysIndirect = ( delegate* )load( @@ -3797,8 +4334,7 @@ namespace StgSharp.Graphics.OpenGL "glGetUniformdv" ); contextPtr->glIsTransformFeedback = ( delegate* )load( "glIsTransformFeedback" ); - contextPtr->glMinSampleShading = ( delegate* )load( - "glMinSampleShading" ); + contextPtr->glMinSampleShading = ( delegate* )load( "glMinSampleShading" ); contextPtr->glPatchParameterfv = ( delegate* )load( "glPatchParameterfv" ); contextPtr->glPatchParameteri = ( delegate* )load( @@ -3807,22 +4343,16 @@ namespace StgSharp.Graphics.OpenGL "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->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->glUniform3dv = ( delegate* )load( "glUniform3dv" ); contextPtr->glUniform4d = ( delegate* )load( "glUniform4d" ); - contextPtr->glUniform4dv = ( delegate* )load( - "glUniform4dv" ); + contextPtr->glUniform4dv = ( delegate* )load( "glUniform4dv" ); contextPtr->glUniformMatrix2dv = ( delegate* )load( "glUniformMatrix2dv" ); contextPtr->glUniformMatrix2x3dv = ( delegate* )load( @@ -3846,17 +4376,16 @@ namespace StgSharp.Graphics.OpenGL #endregion load - InternalIO.InternalAppendLog( - "Successfully load all OpenGL 4.0 APIs" ); + InternalIO.InternalAppendLog( "Successfully load all OpenGL 4.0 APIs" ); } internal static unsafe void LoadGLcore41( - OpenglContext* contextPtr, - delegate* load ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core41 ) { - InternalIO.InternalAppendLog( - "The core version 4.1 is not supported." ); + if( !core41 ) + { + InternalIO.InternalAppendLog( "The core version 4.1 is not supported." ); throw new Exception( "Final Version" ); } @@ -3866,8 +4395,7 @@ namespace StgSharp.Graphics.OpenGL "glActiveShaderProgram" ); contextPtr->glBindProgramPipeline = ( delegate* )load( "glBindProgramPipeline" ); - contextPtr->glClearDepthf = ( delegate* )load( - "glClearDepthf" ); + contextPtr->glClearDepthf = ( delegate* )load( "glClearDepthf" ); contextPtr->glCreateShaderProgramv = ( delegate* )load( "glCreateShaderProgramv" ); contextPtr->glDeleteProgramPipelines = ( delegate* )load( @@ -3876,8 +4404,7 @@ namespace StgSharp.Graphics.OpenGL "glDepthRangeArrayv" ); contextPtr->glDepthRangeIndexed = ( delegate* )load( "glDepthRangeIndexed" ); - contextPtr->glDepthRangef = ( delegate* )load( - "glDepthRangef" ); + contextPtr->glDepthRangef = ( delegate* )load( "glDepthRangef" ); contextPtr->glGenProgramPipelines = ( delegate* )load( "glGenProgramPipelines" ); contextPtr->glGetDoublei_v = ( delegate* )load( @@ -3894,8 +4421,7 @@ namespace StgSharp.Graphics.OpenGL "glGetShaderPrecisionFormat" ); contextPtr->glGetVertexAttribLdv = ( delegate* )load( "glGetVertexAttribLdv" ); - contextPtr->glIsProgramPipeline = ( delegate* )load( - "glIsProgramPipeline" ); + contextPtr->glIsProgramPipeline = ( delegate* )load( "glIsProgramPipeline" ); contextPtr->glProgramBinary = ( delegate* )load( "glProgramBinary" ); contextPtr->glProgramParameteri = ( delegate* )load( @@ -4041,17 +4567,16 @@ namespace StgSharp.Graphics.OpenGL #endregion load - InternalIO.InternalAppendLog( - "Successfully load all OpenGL 4.1 APIs" ); + InternalIO.InternalAppendLog( "Successfully load all OpenGL 4.1 APIs" ); } internal static unsafe void LoadGLcore42( - OpenglContext* contextPtr, - delegate* load ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core42 ) { - InternalIO.InternalAppendLog( - "The core version 4.2 is not supported." ); + if( !core42 ) + { + InternalIO.InternalAppendLog( "The core version 4.2 is not supported." ); throw new Exception( "Final Version" ); } @@ -4073,8 +4598,7 @@ namespace StgSharp.Graphics.OpenGL "glGetActiveAtomicCounterBufferiv" ); contextPtr->glGetInternalformativ = ( delegate* )load( "glGetInternalformativ" ); - contextPtr->glMemoryBarrier = ( delegate* )load( - "glMemoryBarrier" ); + contextPtr->glMemoryBarrier = ( delegate* )load( "glMemoryBarrier" ); contextPtr->glTexStorage1D = ( delegate* )load( "glTexStorage1D" ); contextPtr->glTexStorage2D = ( delegate* )load( @@ -4084,17 +4608,16 @@ namespace StgSharp.Graphics.OpenGL #endregion load - InternalIO.InternalAppendLog( - "Successfully load all OpenGL 4.2 APIs" ); + InternalIO.InternalAppendLog( "Successfully load all OpenGL 4.2 APIs" ); } internal static unsafe void LoadGLcore43( - OpenglContext* contextPtr, - delegate* load ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core43 ) { - InternalIO.InternalAppendLog( - "The core version 4.3 is not supported." ); + if( !core43 ) + { + InternalIO.InternalAppendLog( "The core version 4.3 is not supported." ); throw new Exception( "Final Version" ); } @@ -4130,8 +4653,7 @@ namespace StgSharp.Graphics.OpenGL "glGetObjectLabel" ); contextPtr->glGetObjectPtrLabel = ( delegate* )load( "glGetObjectPtrLabel" ); - contextPtr->glGetPointerv = ( delegate* )load( - "glGetPointerv" ); + contextPtr->glGetPointerv = ( delegate* )load( "glGetPointerv" ); contextPtr->glGetProgramInterfaceiv = ( delegate* )load( "glGetProgramInterfaceiv" ); contextPtr->glGetProgramResourceIndex = ( delegate* )load( @@ -4164,8 +4686,7 @@ namespace StgSharp.Graphics.OpenGL "glObjectLabel" ); contextPtr->glObjectPtrLabel = ( delegate* )load( "glObjectPtrLabel" ); - contextPtr->glPopDebugGroup = ( delegate* )load( - "glPopDebugGroup" ); + contextPtr->glPopDebugGroup = ( delegate* )load( "glPopDebugGroup" ); contextPtr->glPushDebugGroup = ( delegate* )load( "glPushDebugGroup" ); contextPtr->glShaderStorageBlockBinding = ( delegate* )load( @@ -4191,17 +4712,16 @@ namespace StgSharp.Graphics.OpenGL #endregion load - InternalIO.InternalAppendLog( - "Successfully load all OpenGL 4.3 APIs" ); + InternalIO.InternalAppendLog( "Successfully load all OpenGL 4.3 APIs" ); } internal static unsafe void LoadGLcore44( - OpenglContext* contextPtr, - delegate* load ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core44 ) { - InternalIO.InternalAppendLog( - "The core version 4.4 is not supported." ); + if( !core44 ) + { + InternalIO.InternalAppendLog( "The core version 4.4 is not supported." ); throw new Exception( "Final Version" ); } @@ -4228,17 +4748,16 @@ namespace StgSharp.Graphics.OpenGL #endregion load - InternalIO.InternalAppendLog( - "Successfully load all OpenGL 4.4 APIs" ); + InternalIO.InternalAppendLog( "Successfully load all OpenGL 4.4 APIs" ); } internal static unsafe void LoadGLcore45( - OpenglContext* contextPtr, - delegate* load ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core45 ) { - InternalIO.InternalAppendLog( - "The core version 4.5 is not supported." ); + if( !core45 ) + { + InternalIO.InternalAppendLog( "The core version 4.5 is not supported." ); throw new Exception( "Final Version" ); } @@ -4262,8 +4781,7 @@ namespace StgSharp.Graphics.OpenGL "glClearNamedFramebufferiv" ); contextPtr->glClearNamedFramebufferuiv = ( delegate* )load( "glClearNamedFramebufferuiv" ); - contextPtr->glClipControl = ( delegate* )load( - "glClipControl" ); + contextPtr->glClipControl = ( delegate* )load( "glClipControl" ); contextPtr->glCompressedTextureSubImage1D = ( delegate* )load( "glCompressedTextureSubImage1D" ); contextPtr->glCompressedTextureSubImage2D = ( delegate* )load( @@ -4278,8 +4796,7 @@ namespace StgSharp.Graphics.OpenGL "glCopyTextureSubImage2D" ); contextPtr->glCopyTextureSubImage3D = ( delegate* )load( "glCopyTextureSubImage3D" ); - contextPtr->glCreateBuffers = ( delegate* )load( - "glCreateBuffers" ); + contextPtr->glCreateBuffers = ( delegate* )load( "glCreateBuffers" ); contextPtr->glCreateFramebuffers = ( delegate* )load( "glCreateFramebuffers" ); contextPtr->glCreateProgramPipelines = ( delegate* )load( @@ -4408,8 +4925,7 @@ namespace StgSharp.Graphics.OpenGL "glNamedRenderbufferStorageMultisample" ); contextPtr->glReadnPixels = ( delegate* )load( "glReadnPixels" ); - contextPtr->glTextureBarrier = ( delegate* )load( - "glTextureBarrier" ); + contextPtr->glTextureBarrier = ( delegate* )load( "glTextureBarrier" ); contextPtr->glTextureBuffer = ( delegate* )load( "glTextureBuffer" ); contextPtr->glTextureBufferRange = ( delegate* )load( @@ -4446,8 +4962,7 @@ namespace StgSharp.Graphics.OpenGL "glTransformFeedbackBufferBase" ); contextPtr->glTransformFeedbackBufferRange = ( delegate* )load( "glTransformFeedbackBufferRange" ); - contextPtr->glUnmapNamedBuffer = ( delegate* )load( - "glUnmapNamedBuffer" ); + contextPtr->glUnmapNamedBuffer = ( delegate* )load( "glUnmapNamedBuffer" ); contextPtr->glVertexArrayAttribBinding = ( delegate* )load( "glVertexArrayAttribBinding" ); contextPtr->glVertexArrayAttribFormat = ( delegate* )load( @@ -4467,17 +4982,16 @@ namespace StgSharp.Graphics.OpenGL #endregion load - InternalIO.InternalAppendLog( - "Successfully load all OpenGL 4.5 APIs" ); + InternalIO.InternalAppendLog( "Successfully load all OpenGL 4.5 APIs" ); } internal static unsafe void LoadGLcore46( - OpenglContext* contextPtr, - delegate* load ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core46 ) { - InternalIO.InternalAppendLog( - "The core version 4.6 is not supported." ); + if( !core46 ) + { + InternalIO.InternalAppendLog( "The core version 4.6 is not supported." ); throw new Exception( "Final Version" ); } @@ -4494,8 +5008,7 @@ namespace StgSharp.Graphics.OpenGL #endregion load - InternalIO.InternalAppendLog( - "Successfully load all OpenGL 4.6 APIs" ); + InternalIO.InternalAppendLog( "Successfully load all OpenGL 4.6 APIs" ); } } diff --git a/StgSharp.Common/Graphics/OpenGL/glClampf.cs b/StgSharp.Common/Graphics/OpenGL/glClampf.cs index 9151b666..a1034d60 100644 --- a/StgSharp.Common/Graphics/OpenGL/glClampf.cs +++ b/StgSharp.Common/Graphics/OpenGL/glClampf.cs @@ -38,7 +38,7 @@ using System.Threading.Tasks; namespace StgSharp.Internal { /// - /// OpenGL numeric type. An IEEE-754 floating-point value, clamped to the range [0,1]. + /// OpenGL numeric type. An IEEE-754 floating-point value, clamped to the range [0,1]. /// [StructLayout( LayoutKind.Sequential )] public struct GLclampf @@ -64,8 +64,8 @@ namespace StgSharp.Internal } /// - /// OpenGL numeric type. An IEEE-754 double precision floating-point value, clamped to the range - /// [0,1]. + /// OpenGL numeric type. An IEEE-754 double precision floating-point value, clamped to the + /// range [0,1]. /// [StructLayout( LayoutKind.Sequential )] public struct GLclampd diff --git a/StgSharp.Common/Graphics/OpenGL/glConst.cs b/StgSharp.Common/Graphics/OpenGL/glConst.cs index 7f2f8355..ec723f0b 100644 --- a/StgSharp.Common/Graphics/OpenGL/glConst.cs +++ b/StgSharp.Common/Graphics/OpenGL/glConst.cs @@ -4851,7 +4851,8 @@ namespace StgSharp.Graphics.OpenGL public static uint Color( int i ) { #if DEBUG - if( ( i > OpenGLFunction.CurrentGL.AttachmentColorRange ) || ( i < 0 ) ) { + if( ( i > OpenGLFunction.CurrentGL.AttachmentColorRange ) || ( i < 0 ) ) + { throw new ArgumentOutOfRangeException(); } #endif diff --git a/StgSharp.Common/Graphics/OpenGL/glContext.cs b/StgSharp.Common/Graphics/OpenGL/glContext.cs index a156d2af..cdcd11e0 100644 --- a/StgSharp.Common/Graphics/OpenGL/glContext.cs +++ b/StgSharp.Common/Graphics/OpenGL/glContext.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="glContext.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using StgSharp.HighPerformance; using StgSharp.Internal; using StgSharp.Internal.Intrinsic; @@ -57,16 +56,12 @@ namespace StgSharp.Graphics.OpenGL } } - public static bool operator !=( - OpenglContext left, - OpenglContext right ) + public static bool operator !=( OpenglContext left, OpenglContext right ) { return !( left == right ); } - public static bool operator ==( - OpenglContext left, - OpenglContext right ) + public static bool operator ==( OpenglContext left, OpenglContext right ) { return left.Equals( right ); } @@ -95,7 +90,7 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glAsyncCopyBufferSubDataNVX; internal unsafe delegate* glAsyncCopyImageSubDataNVX; internal unsafe delegate* glAsyncMarkerSGIX; - internal unsafe delegate* glAttachObjectARB; + internal unsafe delegate* glAttachObjectARB; internal unsafe delegate* glAttachShader; internal unsafe delegate* glBeginConditionalRender; internal unsafe delegate* glBeginConditionalRenderNV; @@ -113,7 +108,7 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glBeginVertexShaderEXT; internal unsafe delegate* glBeginVideoCaptureNV; internal unsafe delegate* glBindAttribLocation; - internal unsafe delegate* glBindAttribLocationARB; + internal unsafe delegate* glBindAttribLocationARB; internal unsafe delegate* glBindBuffer; internal unsafe delegate* glBindBufferARB; internal unsafe delegate* glBindBufferBase; @@ -301,7 +296,7 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glCommandListSegmentsNV; internal unsafe delegate* glCompileCommandListNV; internal unsafe delegate* glCompileShader; - internal unsafe delegate* glCompileShaderARB; + internal unsafe delegate* glCompileShaderARB; internal unsafe delegate* glCompileShaderIncludeARB; internal unsafe delegate* glCompressedMultiTexImage1DEXT; internal unsafe delegate* glCompressedMultiTexImage2DEXT; @@ -384,7 +379,7 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glCreateMemoryObjectsEXT; internal unsafe delegate* glCreatePerfQueryINTEL; internal unsafe delegate* glCreateProgram; - internal unsafe delegate* glCreateProgramObjectARB; + internal unsafe delegate* glCreateProgramObjectARB; internal unsafe delegate* glCreateProgramPipelines; internal unsafe delegate* glCreateProgressFenceNVX; internal unsafe delegate* glCreateQueries; @@ -392,7 +387,7 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glCreateSamplers; internal unsafe delegate* glCreateSemaphoresNV; internal unsafe delegate* glCreateShader; - internal unsafe delegate* glCreateShaderObjectARB; + internal unsafe delegate* glCreateShaderObjectARB; internal unsafe delegate* glCreateShaderProgramEXT; internal unsafe delegate* glCreateShaderProgramv; internal unsafe delegate* glCreateStatesNV; @@ -428,7 +423,7 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glDeleteMemoryObjectsEXT; internal unsafe delegate* glDeleteNamedStringARB; internal unsafe delegate* glDeleteNamesAMD; - internal unsafe delegate* glDeleteObjectARB; + internal unsafe delegate* glDeleteObjectARB; internal unsafe delegate* glDeleteOcclusionQueriesNV; internal unsafe delegate* glDeletePathsNV; internal unsafe delegate* glDeletePerfMonitorsAMD; @@ -467,7 +462,7 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glDepthRangef; internal unsafe delegate* glDepthRangefOES; internal unsafe delegate* glDepthRangexOES; - internal unsafe delegate* glDetachObjectARB; + internal unsafe delegate* glDetachObjectARB; internal unsafe delegate* glDetachShader; internal unsafe delegate* glDetailTexFuncSGIS; internal unsafe delegate* glDisable; @@ -682,12 +677,12 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glGenerateTextureMipmapEXT; internal unsafe delegate* glGetActiveAtomicCounterBufferiv; internal unsafe delegate* glGetActiveAttrib; - internal unsafe delegate* glGetActiveAttribARB; + 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* glGetActiveUniformARB; internal unsafe delegate* glGetActiveUniformBlockName; internal unsafe delegate* glGetActiveUniformBlockiv; internal unsafe delegate* glGetActiveUniformName; @@ -695,10 +690,10 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glGetActiveVaryingNV; internal unsafe delegate* glGetArrayObjectfvATI; internal unsafe delegate* glGetArrayObjectivATI; - internal unsafe delegate* glGetAttachedObjectsARB; + internal unsafe delegate* glGetAttachedObjectsARB; internal unsafe delegate* glGetAttachedShaders; internal unsafe delegate* glGetAttribLocation; - internal unsafe delegate* glGetAttribLocationARB; + internal unsafe delegate* glGetAttribLocationARB; internal unsafe delegate* glGetBooleanIndexedvEXT; internal unsafe delegate* glGetBooleani_v; internal unsafe delegate* glGetBooleanv; @@ -769,7 +764,7 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glGetFramebufferParameterivMESA; internal unsafe delegate* glGetGraphicsResetStatus; internal unsafe delegate* glGetGraphicsResetStatusARB; - internal unsafe delegate* glGetHandleARB; + internal unsafe delegate* glGetHandleARB; internal unsafe delegate* glGetHistogramEXT; internal unsafe delegate* glGetHistogramParameterfvEXT; internal unsafe delegate* glGetHistogramParameterivEXT; @@ -778,7 +773,7 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glGetImageHandleNV; internal unsafe delegate* glGetImageTransformParameterfvHP; internal unsafe delegate* glGetImageTransformParameterivHP; - internal unsafe delegate* glGetInfoLogARB; + internal unsafe delegate* glGetInfoLogARB; internal unsafe delegate* glGetInstrumentsSGIX; internal unsafe delegate* glGetInteger64i_v; internal unsafe delegate* glGetInteger64v; @@ -853,9 +848,9 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glGetObjectBufferivATI; internal unsafe delegate* glGetObjectLabel; internal unsafe delegate* glGetObjectLabelEXT; - internal unsafe delegate* glGetObjectParameterfvARB; + internal unsafe delegate* glGetObjectParameterfvARB; internal unsafe delegate* glGetObjectParameterivAPPLE; - internal unsafe delegate* glGetObjectParameterivARB; + internal unsafe delegate* glGetObjectParameterivARB; internal unsafe delegate* glGetObjectPtrLabel; internal unsafe delegate* glGetOcclusionQueryivNV; internal unsafe delegate* glGetOcclusionQueryuivNV; @@ -944,7 +939,7 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glGetShaderInfoLog; internal unsafe delegate* glGetShaderPrecisionFormat; internal unsafe delegate* glGetShaderSource; - internal unsafe delegate* glGetShaderSourceARB; + internal unsafe delegate* glGetShaderSourceARB; internal unsafe delegate* glGetShaderiv; internal unsafe delegate* glGetShadingRateImagePaletteNV; internal unsafe delegate* glGetShadingRateSampleLocationivNV; @@ -1002,16 +997,16 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glGetUniformBufferSizeEXT; internal unsafe delegate* glGetUniformIndices; internal unsafe delegate* glGetUniformLocation; - internal unsafe delegate* glGetUniformLocationARB; + 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* glGetUniformfvARB; internal unsafe delegate* glGetUniformi64vARB; internal unsafe delegate* glGetUniformi64vNV; internal unsafe delegate* glGetUniformiv; - internal unsafe delegate* glGetUniformivARB; + internal unsafe delegate* glGetUniformivARB; internal unsafe delegate* glGetUniformui64vARB; internal unsafe delegate* glGetUniformui64vNV; internal unsafe delegate* glGetUniformuiv; @@ -1178,7 +1173,7 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glLineWidth; internal unsafe delegate* glLineWidthxOES; internal unsafe delegate* glLinkProgram; - internal unsafe delegate* glLinkProgramARB; + internal unsafe delegate* glLinkProgramARB; internal unsafe delegate* glListDrawCommandsStatesClientNV; internal unsafe delegate* glListParameterfSGIX; internal unsafe delegate* glListParameterfvSGIX; @@ -1844,7 +1839,7 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glShaderOp2EXT; internal unsafe delegate* glShaderOp3EXT; internal unsafe delegate* unmanaged[Stdcall] glShaderSource; - internal unsafe delegate* glShaderSourceARB; + internal unsafe delegate* glShaderSourceARB; internal unsafe delegate* glShaderStorageBlockBinding; internal unsafe delegate* glShadingRateImageBarrierNV; internal unsafe delegate* glShadingRateImagePaletteNV; @@ -2196,7 +2191,7 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glUpdateObjectBufferATI; internal unsafe delegate* glUploadGpuMaskNVX; internal unsafe delegate* glUseProgram; - internal unsafe delegate* glUseProgramObjectARB; + internal unsafe delegate* glUseProgramObjectARB; internal unsafe delegate* glUseProgramStages; internal unsafe delegate* glUseShaderProgramEXT; internal unsafe delegate* glVDPAUFiniNV; @@ -2211,7 +2206,7 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glVDPAUUnmapSurfacesNV; internal unsafe delegate* glVDPAUUnregisterSurfaceNV; internal unsafe delegate* glValidateProgram; - internal unsafe delegate* glValidateProgramARB; + internal unsafe delegate* glValidateProgramARB; internal unsafe delegate* glValidateProgramPipeline; internal unsafe delegate* glVariantArrayObjectATI; internal unsafe delegate* glVariantPointerEXT; diff --git a/StgSharp.Common/Graphics/OpenGL/glEnum.cs b/StgSharp.Common/Graphics/OpenGL/glEnum.cs index 4dd00bbc..c9895567 100644 --- a/StgSharp.Common/Graphics/OpenGL/glEnum.cs +++ b/StgSharp.Common/Graphics/OpenGL/glEnum.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="glEnum.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -28,13 +28,13 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using System.Runtime.CompilerServices; namespace StgSharp.Graphics.OpenGL { public enum PixelChannelLayout { + UByte = glConst.UNSIGNED_BYTE, Byte = glConst.BYTE, UShort = glConst.UNSIGNED_SHORT, @@ -54,6 +54,16 @@ namespace StgSharp.Graphics.OpenGL 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 FaceMode + { + + Point = glConst.POINT, + Line = glConst.LINE, + Fill = glConst.FILL + } public enum FrameBufferStatus @@ -125,12 +135,18 @@ namespace StgSharp.Graphics.OpenGL public enum glOperation : uint { + StencilTest = glConst.STENCIL_TEST, + DepthTest = glConst.DEPTH_TEST, + PolygonOffsetFill = glConst.POLYGON_OFFSET_FILL, + PolygonOffsetLine = glConst.POLYGON_OFFSET_LINE, + PolygonOffsetPoint = glConst.POLYGON_OFFSET_POINT, + } -#pragma warning disable CA1008 + #pragma warning disable CA1008 public enum ShaderType : int -#pragma warning restore CA1008 + #pragma warning restore CA1008 { Fragment = glConst.FRAGMENT_SHADER, @@ -140,9 +156,9 @@ namespace StgSharp.Graphics.OpenGL } -#pragma warning disable CA1008 + #pragma warning disable CA1008 public enum BufferType : int -#pragma warning restore CA1008 + #pragma warning restore CA1008 { ArrayBuffer = glConst.ARRAY_BUFFER, @@ -162,9 +178,9 @@ namespace StgSharp.Graphics.OpenGL } -#pragma warning disable CA1008 + #pragma warning disable CA1008 public enum BufferUsage : int -#pragma warning restore CA1008 + #pragma warning restore CA1008 { StreamDraw = 0x88E0, diff --git a/StgSharp.Common/Graphics/OpenGL/glException.cs b/StgSharp.Common/Graphics/OpenGL/glException.cs index 6f6b902f..da15f02d 100644 --- a/StgSharp.Common/Graphics/OpenGL/glException.cs +++ b/StgSharp.Common/Graphics/OpenGL/glException.cs @@ -60,19 +60,13 @@ namespace StgSharp.Graphics.OpenGL internal GlArrayFormatException( string message ) : base( message ) { } - internal GlArrayFormatException( - SerializationInfo info, - StreamingContext context ) + internal GlArrayFormatException( SerializationInfo info, StreamingContext context ) : base( info, context ) { } - internal GlArrayFormatException( - string message, - Exception innerException ) + internal GlArrayFormatException( string message, Exception innerException ) : base( message, innerException ) { } - public GlArrayFormatException( - PixelChannelLayout layout, - string arrayname ) + public GlArrayFormatException( PixelChannelLayout layout, string arrayname ) : base( $"{arrayname} cannot be used as layout of {layout}" ) { } } @@ -80,13 +74,12 @@ namespace StgSharp.Graphics.OpenGL public static partial class GlHelper { - public static bool CheckArrayFormat( - this Array array, - PixelChannelLayout layout ) + 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.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[], diff --git a/StgSharp.Common/Graphics/OpenGL/glFucntionSourceManager.cs b/StgSharp.Common/Graphics/OpenGL/glFucntionSourceManager.cs index 0853b013..b41d2845 100644 --- a/StgSharp.Common/Graphics/OpenGL/glFucntionSourceManager.cs +++ b/StgSharp.Common/Graphics/OpenGL/glFucntionSourceManager.cs @@ -55,7 +55,8 @@ namespace StgSharp.Graphics.OpenGL internal void ReturnAvailableUnit( IEnumerable source ) { int v = glConst.TEXTURE0 + TextureUnitCount; - foreach( TextureUnit unit in source ) { + foreach( TextureUnit unit in source ) + { if( ( int )unit > v ) { throw new InvalidOperationException( "Source contains texture unit beyond context support." ); @@ -63,15 +64,16 @@ namespace StgSharp.Graphics.OpenGL } } - internal int TryGetAvailableTextureUnit( - int count, - out IEnumerable result ) + internal int TryGetAvailableTextureUnit( int count, out IEnumerable result ) { result = new Queue(); - for( int i = 0; i < count; i++ ) { - if( UnusedTextureImageUint.TryDequeue( out TextureUnit unit ) ) { + for( int i = 0; i < count; i++ ) + { + if( UnusedTextureImageUint.TryDequeue( out TextureUnit unit ) ) + { ( result as Queue )!.Enqueue( unit ); - } else { + } else + { return i; } } @@ -80,8 +82,7 @@ namespace StgSharp.Graphics.OpenGL private ConcurrentQueue InitializeUnusedTextureImageUint() { - ConcurrentQueue result = new ConcurrentQueue( - ); + ConcurrentQueue result = new ConcurrentQueue(); for( int index = 0; index < TextureUnitCount; index++ ) { result.Enqueue( ( TextureUnit )( glConst.TEXTURE0 + index ) ); } diff --git a/StgSharp.Common/Graphics/OpenGL/glFunction.cs b/StgSharp.Common/Graphics/OpenGL/glFunction.cs index 80f19661..9bf51b4a 100644 --- a/StgSharp.Common/Graphics/OpenGL/glFunction.cs +++ b/StgSharp.Common/Graphics/OpenGL/glFunction.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="glFunction.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -128,10 +128,10 @@ namespace StgSharp.Graphics.OpenGL /// 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 )] @@ -283,7 +283,7 @@ namespace StgSharp.Graphics.OpenGL /// 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 ) @@ -303,6 +303,23 @@ namespace StgSharp.Graphics.OpenGL } } + public void DepthMaskAccess( bool isWrite ) + { + Context.glDepthMask( isWrite ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void Disable( glOperation operation ) + { + Context.glDisable( ( uint )operation ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void DrawArrays( GeometryType mode, int first, uint count ) + { + Context.glDrawArrays( ( uint )mode, first, count ); + } + [MethodImpl( MethodImplOptions.AggressiveInlining )] public unsafe void DrawElements( GeometryType mode, uint count, TypeCode type, IntPtr ptr ) { @@ -340,7 +357,6 @@ namespace StgSharp.Graphics.OpenGL 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."}", @@ -525,6 +541,18 @@ namespace StgSharp.Graphics.OpenGL } } + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void PolygonMode( FaceMode mode ) + { + Context.glPolygonMode( glConst.FRONT_AND_BACK, ( uint )mode ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void PolygonOffset( float factor, float unit ) + { + Context.glPolygonOffset( factor, unit ); + } + [MethodImpl( MethodImplOptions.AggressiveInlining )] public void ReadPixels( (int X, int Y) beginPosition, @@ -595,16 +623,16 @@ namespace StgSharp.Graphics.OpenGL [MethodImpl( MethodImplOptions.AggressiveInlining )] public unsafe void SetBufferData( BufferType bufferType, - ReadOnlySpan bufferArray, + ReadOnlySpan bufferSpan, BufferUsage usage ) where T: struct,INumber { - int size = bufferArray.Length * Marshal.SizeOf( typeof( T ) ); - if( bufferArray == null ) { + int size = bufferSpan.Length * Marshal.SizeOf( typeof( T ) ); + if( bufferSpan == null ) { return; } #pragma warning disable CS8500 - fixed( void* bufferPtr = bufferArray ) + fixed( void* bufferPtr = bufferSpan ) #pragma warning restore CS8500 { Context.glBufferData( @@ -625,7 +653,7 @@ namespace StgSharp.Graphics.OpenGL } #pragma warning disable CS8500 - fixed( void* bufferPtr = &bufferArray.GetPinnableReference() ) + fixed( void* bufferPtr = bufferArray ) #pragma warning restore CS8500 { Context.glBufferData( @@ -636,16 +664,13 @@ namespace StgSharp.Graphics.OpenGL [MethodImpl( MethodImplOptions.AggressiveInlining )] public unsafe void SetBufferVectorData( BufferType bufferType, - ReadOnlySpan bufferArray, + ReadOnlySpan bufferSpan, BufferUsage usage ) where T: struct, IVector { - int size = bufferArray.Length * Marshal.SizeOf( typeof( T ) ); - if( bufferArray == null ) { - return; - } + int size = bufferSpan.Length * Marshal.SizeOf( typeof( T ) ); #pragma warning disable CS8500 - fixed( void* bufferPtr = &bufferArray.GetPinnableReference() ) + fixed( void* bufferPtr = bufferSpan ) #pragma warning restore CS8500 { Context.glBufferData( @@ -783,6 +808,7 @@ namespace StgSharp.Graphics.OpenGL Context.glViewport( x, y, width, height ); } + [MethodImpl( MethodImplOptions.AggressiveInlining )] public void WaitAccomplishment() { Context.glFinish(); diff --git a/StgSharp.Common/Graphics/OpenGL/glHalfNV.cs b/StgSharp.Common/Graphics/OpenGL/glHalfNV.cs index 47e5e0f2..0f83ee16 100644 --- a/StgSharp.Common/Graphics/OpenGL/glHalfNV.cs +++ b/StgSharp.Common/Graphics/OpenGL/glHalfNV.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="glHalfNV.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -35,7 +35,7 @@ using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; -namespace StgSharp.Internal.OpenGL +namespace StgSharp.Graphics.OpenGL { [StructLayout( LayoutKind.Explicit, Size = 16 )] public struct glHalfNV @@ -48,9 +48,14 @@ namespace StgSharp.Internal.OpenGL binary = bin; } - public static glHalfNV FromInt16(short x) + public static glHalfNV FromInt16( short x ) { - return new glHalfNV(x); + return new glHalfNV( x ); + } + + public static short ToInt16( glHalfNV half ) + { + return half.binary; } public static explicit operator glHalfNV( short x ) @@ -58,11 +63,6 @@ namespace StgSharp.Internal.OpenGL 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 index fd94a7ad..259c6ea1 100644 --- a/StgSharp.Common/Graphics/OpenGL/glHandle.cs +++ b/StgSharp.Common/Graphics/OpenGL/glHandle.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="glHandle.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -46,24 +46,33 @@ namespace StgSharp.Graphics.OpenGL public struct GlHandle { - [FieldOffset( 0 )] public int SignedValue; - [FieldOffset( 0 )] public uint Value; + [FieldOffset( 0 )] internal int SignedValue; + [FieldOffset( 0 )] internal uint Value; public static GlHandle Zero { - get => new GlHandle { Value = 0 }; + get => new GlHandle + { + Value = 0 + }; } [MethodImpl( MethodImplOptions.AggressiveInlining )] public static GlHandle Alloc( uint value ) { - return new GlHandle { Value = value }; + return new GlHandle + { + Value = value + }; } [MethodImpl( MethodImplOptions.AggressiveInlining )] public static GlHandle SignedAlloc( int value ) { - return new GlHandle { SignedValue = value }; + return new GlHandle + { + SignedValue = value + }; } } diff --git a/StgSharp.Common/Graphics/OpenGL/glRenderObjectGenrator.cs b/StgSharp.Common/Graphics/OpenGL/glRenderObjectGenrator.cs index 045376c1..a8eb0d86 100644 --- a/StgSharp.Common/Graphics/OpenGL/glRenderObjectGenrator.cs +++ b/StgSharp.Common/Graphics/OpenGL/glRenderObjectGenrator.cs @@ -1,6 +1,6 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- -// file="glRenderSourceGenrator.cs" +// file="glRenderObjectGenrator.cs" // Project: StgSharp // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. @@ -48,10 +48,14 @@ namespace StgSharp.Graphics.OpenGL } /// - /// Create a set of . + /// Create a set of . /// - /// Amount of EBO to be created. - /// + /// + /// Amount of EBO to be created. + /// + /// + /// + /// [MethodImpl( MethodImplOptions.AggressiveInlining )] protected ElementBuffer CreateElementBuffer( int count ) { @@ -71,10 +75,14 @@ namespace StgSharp.Graphics.OpenGL } /// - /// Create a sets of + /// Create a sets of /// - /// Amount of textures to be created. - /// + /// + /// Amount of textures to be created. + /// + /// + /// + /// [MethodImpl( MethodImplOptions.AggressiveInlining )] protected TextureGL CreateTexture( int count ) { @@ -82,10 +90,14 @@ namespace StgSharp.Graphics.OpenGL } /// - /// Create a set of . + /// Create a set of . /// - /// Amount of VAO to be created. - /// + /// + /// Amount of VAO to be created. + /// + /// + /// + /// [MethodImpl( MethodImplOptions.AggressiveInlining )] protected VertexArray CreateVertexArray( int count ) { @@ -93,10 +105,14 @@ namespace StgSharp.Graphics.OpenGL } /// - /// Create a set of . + /// Create a set of . /// - /// Amount of Object to be created. - /// + /// + /// Amount of Object to be created. + /// + /// + /// + /// [MethodImpl( MethodImplOptions.AggressiveInlining )] protected VertexBuffer CreateVertexBuffer( int count ) { diff --git a/StgSharp.Common/Graphics/OpenGL/glRenderStream.cs b/StgSharp.Common/Graphics/OpenGL/glRenderStream.cs index 478b6ef9..bb468836 100644 --- a/StgSharp.Common/Graphics/OpenGL/glRenderStream.cs +++ b/StgSharp.Common/Graphics/OpenGL/glRenderStream.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="glRenderStream.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -58,29 +58,28 @@ namespace StgSharp.Graphics.OpenGL } /// - /// Initialize an opengl context and load all opengl functions. + /// Initialize an opengl context and load all opengl functions. /// public unsafe void InitializeContext() { - if( ContextHandle == default ) { - ContextHandle = Marshal.AllocHGlobal( - Marshal.SizeOf( typeof( OpenglContext ) ) ); + 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 ); + _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. + /// 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. + /// Something goes wrong and World fails in creating a new OpenGL viewPortDisplay. /// public unsafe void MakeAsCurrentContext() { @@ -91,8 +90,7 @@ namespace StgSharp.Graphics.OpenGL /// public override void RenderEnd() { - if( !renderToThread.TryGetValue( this, - out Thread t ) || t != Thread.CurrentThread ) { + if( !renderToThread.TryGetValue( this, out Thread t ) || t != Thread.CurrentThread ) { throw new InvalidOperationException( $"Current render has had been binded to thread {t!.ManagedThreadId}" ); } @@ -106,8 +104,8 @@ namespace StgSharp.Graphics.OpenGL public override void RenderStart() { Thread current = Thread.CurrentThread; - if( !renderToThread.TryGetValue( this, - out Thread t ) || t == ThreadHelper.EmptyThread ) { + if( !renderToThread.TryGetValue( this, out Thread t ) || t == ThreadHelper.EmptyThread ) + { renderToThread[ this ] = current; MakeAsCurrentContext(); return; @@ -120,10 +118,10 @@ namespace StgSharp.Graphics.OpenGL [MethodImpl( MethodImplOptions.AggressiveInlining )] public override void SetSizeLimit( - int minWidth, - int minHeight, - int maxWidth, - int maxHeight ) + int minWidth, + int minHeight, + int maxWidth, + int maxHeight ) { InternalIO.glfwSetWindowSizeLimits( this.CanvasHandle, minWidth, minHeight, maxWidth, maxHeight ); @@ -144,8 +142,8 @@ namespace StgSharp.Graphics.OpenGL } protected override sealed Uniform NativeCameraUniform( - ShaderProgram source, - string name ) + ShaderProgram source, + string name ) { NativeCamera.GainAllUniforms( source, name ); return NativeCamera.convertedUniform; @@ -153,18 +151,18 @@ namespace StgSharp.Graphics.OpenGL [MethodImpl( MethodImplOptions.AggressiveInlining )] protected override sealed void NativeCameraViewRange( - Radius fieldOfRange, - Vec2 offset, - (float frontDepth, float backDepth) viewDepth ) + Radius fieldOfRange, + Vec2 offset, + (float frontDepth, float backDepth) viewDepth ) { - NativeCamera.SetViewRange( - fieldOfRange, this.Size, offset, viewDepth ); + NativeCamera.SetViewRange( fieldOfRange, this.Size, offset, viewDepth ); } + [MethodImpl( MethodImplOptions.AggressiveInlining )] protected override sealed void NativeCameraViewTarget( - Vec3 position, - Vec3 direction, - Vec3 up ) + Vec3 position, + Vec3 direction, + Vec3 up ) { NativeCamera.SetViewDirection( position, direction, up ); } diff --git a/StgSharp.Common/Graphics/OpenGL/glType.cs b/StgSharp.Common/Graphics/OpenGL/glType.cs index d4f7dfc1..d521626d 100644 --- a/StgSharp.Common/Graphics/OpenGL/glType.cs +++ b/StgSharp.Common/Graphics/OpenGL/glType.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="glType.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using System; using System.Collections.Generic; using System.Collections.ObjectModel; @@ -37,24 +36,26 @@ using System.Text; namespace StgSharp.Internal.OpenGL { - public delegate IntPtr GLfuncLoader( string name ); - internal delegate void GLVULKANPROCNV(); - public unsafe struct GLhandleARB + public unsafe struct glHandleARB { private dynamic value; - public unsafe GLhandleARB( dynamic value ) + public unsafe glHandleARB( dynamic value ) { - if( !RuntimeInformation.IsOSPlatform( OSPlatform.OSX ) ) { - if( value.GetType().Name != "Uint32" ) { + if( !RuntimeInformation.IsOSPlatform( OSPlatform.OSX ) ) + { + if( value.GetType().Name != "Uint32" ) + { goto errorlog; } this.value = value; - } else { - if( value.GetType().Name != "IntPtr" ) { + } else + { + if( value.GetType().Name != "IntPtr" ) + { goto errorlog; } this.value = value; @@ -68,81 +69,10 @@ namespace StgSharp.Internal.OpenGL } } - public static implicit operator uint( GLhandleARB value ) + 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 index dd4b3d15..8634b7a1 100644 --- a/StgSharp.Common/Graphics/Pixels.cs +++ b/StgSharp.Common/Graphics/Pixels.cs @@ -38,34 +38,15 @@ namespace StgSharp.Graphics public interface IPixel { - public float Red - { - get; - set; - } + public float Red { get; set; } - public float Green - { - get; - set; - } + public float Green { get; set; } - public float Blue - { - get; - set; - } + public float Blue { get; set; } - public float Alpha - { - get; - set; - } + public float Alpha { get; set; } - internal int Size - { - get; - } + internal int Size { get; } } diff --git a/StgSharp.Common/Graphics/PlainGeometryMesh.cs b/StgSharp.Common/Graphics/PlainGeometryMesh.cs index 11666a61..c1e9e4ef 100644 --- a/StgSharp.Common/Graphics/PlainGeometryMesh.cs +++ b/StgSharp.Common/Graphics/PlainGeometryMesh.cs @@ -46,9 +46,7 @@ namespace StgSharp.Graphics private PlainGeometry _shape; private TextureProvider _texture; - public PlainGeometryMesh( - [NotNull] PlainGeometry shape, - [NotNull] TextureProvider texture ) + public PlainGeometryMesh( [NotNull] PlainGeometry shape, [NotNull] TextureProvider texture ) { if( shape.VertexCount > texture.TextureCoordinate.Length ) { throw new ArgumentException( @@ -61,10 +59,7 @@ namespace StgSharp.Graphics //private Image _texture; - public PlainGeometryMesh( - PlainGeometry shape, - Image texture, - Vec2[] texCoord ) + public PlainGeometryMesh( PlainGeometry shape, Image texture, Vec2[] texCoord ) { ArgumentNullException.ThrowIfNull( shape ); ArgumentNullException.ThrowIfNull( texCoord ); diff --git a/StgSharp.Common/Graphics/RenderStream.cs b/StgSharp.Common/Graphics/RenderStream.cs index f841362e..090f38a2 100644 --- a/StgSharp.Common/Graphics/RenderStream.cs +++ b/StgSharp.Common/Graphics/RenderStream.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="RenderStream.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -32,7 +32,6 @@ using StgSharp.Graphics.OpenGL; using StgSharp.Math; using StgSharp.MVVM; -using StgSharp.MVVM.View; using StgSharp.Timing; using System; @@ -50,8 +49,9 @@ namespace StgSharp.Graphics public abstract class RenderStream { - private protected ViewPort primeArgs; private Camera nativeCamera; + + private protected ViewPort primeArgs; internal TimeSpanProvider _timeProvider; public (int width, int height) Size @@ -59,10 +59,7 @@ namespace StgSharp.Graphics get => (Width, Height); } - public abstract bool IsContextSharable - { - get; - } + public abstract bool IsContextSharable { get; } public int Height { @@ -93,7 +90,7 @@ namespace StgSharp.Graphics internal IntPtr CanvasHandle { - get => primeArgs.ViewPortID; + get => primeArgs.ViewPortHandle; } internal IntPtr ContextHandle @@ -129,28 +126,33 @@ namespace StgSharp.Graphics } /// - /// Set the size limit of current form + /// 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 + /// + /// 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 ); + int minWidth, + int minHeight, + int maxWidth, + int maxHeight ); - public static TTarget ShareContextFrom( - [NotNull]TSource source ) + public static TTarget ShareContextFrom( [NotNull]TSource source ) where TSource: RenderStream where TTarget: RenderStream, new() { TTarget target = new TTarget(); - target.Initialize( - source.BindedViewPortContext, - source._timeProvider ); + target.Initialize( source.BindedViewPortContext, source._timeProvider ); return target; } @@ -170,38 +172,37 @@ namespace StgSharp.Graphics #region native camera operation protected abstract void NativeCameraViewRange( - Radius fieldOfRange, - Vec2 offset, - (float frontDepth, float backDepth) viewDepth ); + Radius fieldOfRange, + Vec2 offset, + (float frontDepth, float backDepth) viewDepth ); - protected abstract void NativeCameraViewTarget( - Vec3 position, - Vec3 direction, - Vec3 up ); + 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. + /// 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 + /// + /// Shader using this camera + /// + /// + /// ContextName of projection camera named in shader + /// /// - /// (TView is ) representing projection - /// matrix in shader program. + /// (TView is ) representing projection + /// matrix in shader program. /// protected abstract Uniform NativeCameraUniform( - ShaderProgram source, - string name ); + ShaderProgram source, + string name ); #endregion #region internal operation - public void Initialize( - ViewPort v, - TimeSpanProvider timeProvider ) + public void Initialize( ViewPort v, TimeSpanProvider timeProvider ) { if( v == null ) { throw new ArgumentNullException( nameof( v ) ); @@ -227,13 +228,14 @@ namespace StgSharp.Graphics protected abstract void CustomizeInit(); /// - /// Marking the start of current render operations, and set this renser context as current. + /// 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. + /// 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(); @@ -241,9 +243,7 @@ namespace StgSharp.Graphics #region public resource generator - protected abstract Shader CreateShaderSegment( - ShaderType type, - int count ); + protected abstract Shader CreateShaderSegment( ShaderType type, int count ); protected abstract ShaderProgram CreateShaderProgram(); diff --git a/StgSharp.Common/Graphics/ShaderEdit/ShaderGenerator.cs b/StgSharp.Common/Graphics/ShaderEdit/ShaderGenerator.cs index 48878e6a..96a4d037 100644 --- a/StgSharp.Common/Graphics/ShaderEdit/ShaderGenerator.cs +++ b/StgSharp.Common/Graphics/ShaderEdit/ShaderGenerator.cs @@ -48,11 +48,9 @@ namespace StgSharp.Graphics.ShaderEdit private List codeList; private List usedShaderFunctions; - public Uniform DefineUniform( string name, int index ) - where T: struct + public Uniform DefineUniform( string name, int index ) where T: struct { - ShaderParameter p = new ShaderParameter( - name, ShaderParameter.TypeMarshal() ); + ShaderParameter p = new ShaderParameter( name, ShaderParameter.TypeMarshal() ); uniformDefine.Add( index, p ); //return new Uniform(); @@ -72,23 +70,26 @@ namespace StgSharp.Graphics.ShaderEdit public int ParameterCount => inputList.Count; public void EmitCall( - ShaderFunction function, - ShaderParameter outPut, - params ShaderParameter[] inputParams ) + ShaderFunction function, + ShaderParameter outPut, + params ShaderParameter[] inputParams ) { - if( inputParams.Length != function.ParameterCount ) { + 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 ) ) { + 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 ] ) ) { + 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." ); @@ -124,20 +125,21 @@ namespace StgSharp.Graphics.ShaderEdit isReadOnly = false; } - public static bool IsSameType( - ShaderParameter param1, - ShaderParameter param2 ) + public static bool IsSameType( ShaderParameter param1, ShaderParameter param2 ) { - if( param1.type != InternalShaderType.Struct ) { + if( param1.type != InternalShaderType.Struct ) + { return param1.type == param2.type; - } else { + } else + { throw new Exception( "Struct is currently not supported." ); } } public static InternalShaderType TypeMarshal() where T: struct { - switch( Type.GetTypeCode( typeof( T ) ) ) { + switch( Type.GetTypeCode( typeof( T ) ) ) + { case TypeCode.Single: return InternalShaderType.Float; case TypeCode.Double: @@ -149,7 +151,8 @@ namespace StgSharp.Graphics.ShaderEdit default: break; } - switch( typeof( T ).Name ) { + switch( typeof( T ).Name ) + { case "vec4d": return InternalShaderType.Vector4; case "Matrix2x2": @@ -171,8 +174,7 @@ namespace StgSharp.Graphics.ShaderEdit case "Matrix4x4": return InternalShaderType.Matrix4x4; default: - throw new ArgumentException( - "Not supported shader data type." ); + throw new ArgumentException( "Not supported shader data type." ); } } diff --git a/StgSharp.Common/Graphics/ShaderEdit/ShaderStruct.cs b/StgSharp.Common/Graphics/ShaderEdit/ShaderStruct.cs index eecd6187..1ca12fe4 100644 --- a/StgSharp.Common/Graphics/ShaderEdit/ShaderStruct.cs +++ b/StgSharp.Common/Graphics/ShaderEdit/ShaderStruct.cs @@ -53,8 +53,7 @@ namespace StgSharp.Graphics.ShaderEdit internal ShaderStruct() { } - public ShaderStruct( - params (GlHandle, ShaderStructMember)[] uniformPairs ) + public ShaderStruct( params (GlHandle, ShaderStructMember)[] uniformPairs ) { uniformPair = new Dictionary(); if( uniformPairs.Length == 0 ) { @@ -69,10 +68,12 @@ namespace StgSharp.Graphics.ShaderEdit public unsafe void SetAllUniforms() { OpenglContext* gl = ( OpenglContext* )OpenGL.OpenGLFunction.CurrentGL.ContextHandle; - foreach( KeyValuePair uniform in uniformPair ) { + foreach( KeyValuePair uniform in uniformPair ) + { int id = uniform.Key.SignedValue; ShaderStructMember s = uniform.Value; - switch( s.type ) { + switch( s.type ) + { case InternalShaderType.Struct: throw new ArgumentException( "Incorrect type \"Struct\" defined in this self define type" ); diff --git a/StgSharp.Common/Graphics/TexturePipeline.cs b/StgSharp.Common/Graphics/TexturePipeline.cs index 4f4548a2..14bfab2c 100644 --- a/StgSharp.Common/Graphics/TexturePipeline.cs +++ b/StgSharp.Common/Graphics/TexturePipeline.cs @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using StgSharp.PipeLine; using System; diff --git a/StgSharp.Common/Graphics/TextureProvider.cs b/StgSharp.Common/Graphics/TextureProvider.cs index 351dfe8d..2899a0bf 100644 --- a/StgSharp.Common/Graphics/TextureProvider.cs +++ b/StgSharp.Common/Graphics/TextureProvider.cs @@ -75,9 +75,11 @@ namespace StgSharp.Graphics if( i == _tex ) { return; } - if( i.Size == _tex.Size ) { + if( i.Size == _tex.Size ) + { _tex = i; - } else { + } else + { throw new ArgumentException( $"Size of {nameof(i)} does not equals to current image." ); } diff --git a/StgSharp.Common/Graphics/framework.cs b/StgSharp.Common/Graphics/framework.cs index ee91a8c1..742ddd6a 100644 --- a/StgSharp.Common/Graphics/framework.cs +++ b/StgSharp.Common/Graphics/framework.cs @@ -42,65 +42,62 @@ using System.Text; // using Windows.Win32; #endif - namespace StgSharp.Graphics { + /// + /// Function handler to load an opengl function by searching its _label. + /// + /// + /// the _label of the Opengl function + /// + /// + /// An Intptr value representing the pointer to the function + /// + public delegate IntPtr glLoader( string name ); #region StgSharpDele - public unsafe delegate void FrameBufferSizeHandler( - IntPtr window, - int width, - int height); + public unsafe delegate void FrameBufferSizeHandler( IntPtr window, int width, int height ); - public unsafe delegate void FramePositionHandler( - IntPtr window, - float width, - float 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); + 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); + 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); + 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); + uint id, + int category, + int severity, + int length, + sbyte* message, + void* userParam ); - #endregion +#endregion } diff --git a/StgSharp.Common/Graphics/frameworkSyncContext.cs b/StgSharp.Common/Graphics/frameworkSyncContext.cs index 661b20d1..8f33a9a6 100644 --- a/StgSharp.Common/Graphics/frameworkSyncContext.cs +++ b/StgSharp.Common/Graphics/frameworkSyncContext.cs @@ -42,8 +42,7 @@ namespace StgSharp.Threading public class FrameworkSyncContext : SynchronizationContext { - private static readonly FrameworkSyncContext _mainThreadContext = new FrameworkSyncContext( - ); + private static readonly FrameworkSyncContext _mainThreadContext = new FrameworkSyncContext(); private readonly BlockingCollection _syncContexts = new BlockingCollection( ); @@ -67,9 +66,11 @@ namespace StgSharp.Threading public override void Send( SendOrPostCallback d, object state ) { - if( Thread.CurrentThread == _mainThread ) { + if( Thread.CurrentThread == _mainThread ) + { d( state ); - } else { + } else + { Post( d, state ); } } diff --git a/StgSharp.Common/HighPerformance/Lable.cs b/StgSharp.Common/HighPerformance/Lable.cs index 9bf1de48..112468f5 100644 --- a/StgSharp.Common/HighPerformance/Lable.cs +++ b/StgSharp.Common/HighPerformance/Lable.cs @@ -52,8 +52,7 @@ namespace StgSharp.HighPerformance { ReadOnlySpan nameSpan = _name.AsSpan(); fixed( char* cptr = nameSpan ) { - return InternalIO.Intrinsic - .city_hash_simplify( cptr, _name.Length ); + return InternalIO.Intrinsic.city_hash_simplify( cptr, _name.Length ); } } diff --git a/StgSharp.Common/HighPerformance/M128.cs b/StgSharp.Common/HighPerformance/M128.cs index 2df924a1..0f5b2dff 100644 --- a/StgSharp.Common/HighPerformance/M128.cs +++ b/StgSharp.Common/HighPerformance/M128.cs @@ -81,7 +81,8 @@ namespace StgSharp.HighPerformance public T Read( int index ) where T: struct, INumber { - fixed( byte* p = Buffer ) { + fixed( byte* p = Buffer ) + { #pragma warning disable CS8500 return *( ( T* )p + index ); #pragma warning restore CS8500 @@ -105,7 +106,8 @@ namespace StgSharp.HighPerformance [MethodImpl( MethodImplOptions.AggressiveInlining )] public void Write( int index, T value ) where T: struct, INumber { - fixed( byte* p = Buffer ) { + fixed( byte* p = Buffer ) + { #pragma warning disable CS8500 *( ( T* )p + index ) = value; #pragma warning restore CS8500 diff --git a/StgSharp.Common/HighPerformance/M64.cs b/StgSharp.Common/HighPerformance/M64.cs index 1d7a86a1..e3162f12 100644 --- a/StgSharp.Common/HighPerformance/M64.cs +++ b/StgSharp.Common/HighPerformance/M64.cs @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using System; using System.Collections.Generic; using System.Drawing; diff --git a/StgSharp.Common/HighPerformance/UnsafeCompute.cs b/StgSharp.Common/HighPerformance/UnsafeCompute.cs index 1301a8b2..c5d827ed 100644 --- a/StgSharp.Common/HighPerformance/UnsafeCompute.cs +++ b/StgSharp.Common/HighPerformance/UnsafeCompute.cs @@ -46,20 +46,13 @@ namespace StgSharp.HighPerformance } [MethodImpl( MethodImplOptions.AggressiveInlining )] - public static unsafe int CityHashSimplify( - char* span, - int begin, - int length ) + public static unsafe int CityHashSimplify( char* span, int begin, int length ) { - return InternalIO.Intrinsic - .city_hash_simplify( span + begin, length ); + return InternalIO.Intrinsic.city_hash_simplify( span + begin, length ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] - public static unsafe int IndexOfCharPair( - char* source, - int pairValue, - int length ) + public static unsafe int IndexOfCharPair( char* source, int pairValue, int length ) { return InternalIO.Intrinsic.index_pair( source, pairValue, length ); } diff --git a/StgSharp.Common/Internal/ClangLoad/gl.cs b/StgSharp.Common/Internal/ClangLoad/gl.cs index 0a412ac2..c1477ba6 100644 --- a/StgSharp.Common/Internal/ClangLoad/gl.cs +++ b/StgSharp.Common/Internal/ClangLoad/gl.cs @@ -46,10 +46,10 @@ namespace StgSharp.Internal [UnmanagedCallConv( CallConvs = [typeof( CallConvCdecl )] )] #pragma warning disable CA5392 internal static partial int glCheckShaderStatus( - ref OpenglContext context, - uint shaderHandle, - int key, - ref IntPtr logPtr ); + ref OpenglContext context, + uint shaderHandle, + int key, + ref IntPtr logPtr ); #pragma warning restore CA5392 @@ -57,9 +57,7 @@ namespace StgSharp.Internal [LibraryImport( SSC_libName, EntryPoint = "initGL" )] [UnmanagedCallConv( CallConvs = [typeof( CallConvCdecl )] )] - internal static partial void InternalInitGL( - int majorVersion, - int minorVersion ); + internal static partial void InternalInitGL( int majorVersion, int minorVersion ); [LibraryImport( SSC_libName, @@ -71,8 +69,8 @@ namespace StgSharp.Internal [LibraryImport( SSC_libName, EntryPoint = "linkShaderProgram" )] [UnmanagedCallConv( CallConvs = [typeof( CallConvCdecl )] )] internal static unsafe partial uint InternalLinkShaderProgram( - OpenglContext* context, - uint shaderProgram ); + OpenglContext* context, + uint shaderProgram ); [LibraryImport( SSC_libName, EntryPoint = "readLog" )] [UnmanagedCallConv( CallConvs = [typeof( CallConvCdecl )] )] @@ -84,14 +82,13 @@ namespace StgSharp.Internal StringMarshalling = StringMarshalling.Utf8 )] [UnmanagedCallConv( CallConvs = [typeof( CallConvCdecl )] )] internal static unsafe partial void InternalLoadImage( - string fileName, - ImageInfo* output, - ImageLoader loader ); + string fileName, + ImageInfo* output, + ImageLoader loader ); [LibraryImport( SSC_libName, EntryPoint = "unloadImageData" )] [UnmanagedCallConv( CallConvs = [typeof( CallConvCdecl )] )] - internal static unsafe partial void InternalUnloadImage( - ImageInfo* output ); + internal static unsafe partial void InternalUnloadImage( ImageInfo* output ); #endregion ssgc api define } diff --git a/StgSharp.Common/Internal/InternalIO.cs b/StgSharp.Common/Internal/InternalIO.cs index 88728c2d..b4551bb0 100644 --- a/StgSharp.Common/Internal/InternalIO.cs +++ b/StgSharp.Common/Internal/InternalIO.cs @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using StgSharp.Graphics; using StgSharp.Graphics.OpenGL; @@ -60,8 +59,7 @@ namespace StgSharp.Internal internal static IntPtr SSClibPtr = IntPtr.Zero; - internal static SemaphoreSlim logSyncSemaphore = new SemaphoreSlim( - 1, 1 ); + internal static SemaphoreSlim logSyncSemaphore = new SemaphoreSlim( 1, 1 ); static InternalIO() { @@ -76,7 +74,8 @@ namespace StgSharp.Internal internal static void InternalAppendLog( string log ) { - if( !File.Exists( SS_errorLog ) ) { + if( !File.Exists( SS_errorLog ) ) + { FileStream stream = File.Create( SS_errorLog ); stream.Close(); } @@ -87,10 +86,10 @@ namespace StgSharp.Internal } [Obsolete( "Not completed", true )] - internal static IntPtr InternalLoadProc( IntPtr lib, string name ) - where T: Delegate + internal static IntPtr InternalLoadProc( IntPtr lib, string name ) where T: Delegate { - try { + try + { IntPtr procPtr = #if WINDOWS IntPtr.Zero; @@ -102,7 +101,8 @@ namespace StgSharp.Internal #endif return procPtr; } - catch( Exception ) { + catch( Exception ) + { throw; } } @@ -110,34 +110,33 @@ namespace StgSharp.Internal internal static void InternalWriteLog( string logLine, LogType logType ) { logSyncSemaphore.Wait(); - if( !File.Exists( SS_errorLog ) ) { + 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")}" ); + 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 ) + internal static void InternalWriteLog( string beforeTime, string logLine, LogType logType ) { logSyncSemaphore.Wait(); - if( !File.Exists( SS_errorLog ) ) { + if( !File.Exists( SS_errorLog ) ) + { FileStream stream = File.Create( SS_errorLog ); stream.Close(); } - using( StreamWriter logStream = File.AppendText( SS_errorLog ) ) { + using( StreamWriter logStream = File.AppendText( SS_errorLog ) ) + { logStream.WriteLine( beforeTime ); - logStream.WriteLine( - $"{logType}\t@\t{DateTime.Now.ToString("o")}" ); + logStream.WriteLine( $"{logType}\t@\t{DateTime.Now.ToString("o")}" ); logStream.WriteLine( logLine ); } logSyncSemaphore.Release( 1 ); diff --git a/StgSharp.Common/Internal/Intrinsic/ColumnSet2.cs b/StgSharp.Common/Internal/Intrinsic/ColumnSet2.cs index 591e4627..dc8e17ba 100644 --- a/StgSharp.Common/Internal/Intrinsic/ColumnSet2.cs +++ b/StgSharp.Common/Internal/Intrinsic/ColumnSet2.cs @@ -71,8 +71,7 @@ namespace StgSharp.Internal.Intrinsic [MethodImpl( MethodImplOptions.AggressiveInlining )] public bool Equals( ColumnSet2 other ) { - return colum0.Equals( other.colum0 ) && colum1.Equals( - other.colum1 ); + return colum0.Equals( other.colum0 ) && colum1.Equals( other.colum1 ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] diff --git a/StgSharp.Common/Internal/Intrinsic/ColumnSet3.cs b/StgSharp.Common/Internal/Intrinsic/ColumnSet3.cs index 4fe9b0e2..801c445b 100644 --- a/StgSharp.Common/Internal/Intrinsic/ColumnSet3.cs +++ b/StgSharp.Common/Internal/Intrinsic/ColumnSet3.cs @@ -67,8 +67,9 @@ namespace StgSharp.Internal.Intrinsic [MethodImpl( MethodImplOptions.AggressiveInlining )] public bool Equals( ColumnSet3 other ) { - return colum0.Equals( other.colum0 ) && colum1.Equals( - other.colum1 ) && colum2.Equals( other.colum2 ); + return colum0.Equals( other.colum0 ) && + colum1.Equals( other.colum1 ) && + colum2.Equals( other.colum2 ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] diff --git a/StgSharp.Common/Internal/Intrinsic/ColumnSet4.cs b/StgSharp.Common/Internal/Intrinsic/ColumnSet4.cs index 8093c0f5..dbdaa263 100644 --- a/StgSharp.Common/Internal/Intrinsic/ColumnSet4.cs +++ b/StgSharp.Common/Internal/Intrinsic/ColumnSet4.cs @@ -65,11 +65,7 @@ namespace StgSharp.Internal.Intrinsic [FieldOffset( 60 )] public float m33; [MethodImpl( MethodImplOptions.AggressiveInlining )] - internal ColumnSet4( - Vector4 colum0, - Vector4 colum1, - Vector4 colum2, - Vector4 colum3 ) + internal ColumnSet4( Vector4 colum0, Vector4 colum1, Vector4 colum2, Vector4 colum3 ) { Unsafe.SkipInit( out this ); this.colum0 = colum0; @@ -86,9 +82,10 @@ namespace StgSharp.Internal.Intrinsic [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 ); + return colum0.Equals( other.colum0 ) && + colum1.Equals( other.colum1 ) && + colum2.Equals( other.colum2 ) && + colum3.Equals( other.colum3 ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] diff --git a/StgSharp.Common/Internal/Intrinsic/IntrinsicContext.cs b/StgSharp.Common/Internal/Intrinsic/IntrinsicContext.cs index e2aa5c0a..605ceb48 100644 --- a/StgSharp.Common/Internal/Intrinsic/IntrinsicContext.cs +++ b/StgSharp.Common/Internal/Intrinsic/IntrinsicContext.cs @@ -44,7 +44,6 @@ 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; diff --git a/StgSharp.Common/Internal/Intrinsic/intrinsicContextProvider.cs b/StgSharp.Common/Internal/Intrinsic/intrinsicContextProvider.cs index c159bf45..eddf506b 100644 --- a/StgSharp.Common/Internal/Intrinsic/intrinsicContextProvider.cs +++ b/StgSharp.Common/Internal/Intrinsic/intrinsicContextProvider.cs @@ -40,8 +40,7 @@ namespace StgSharp.Internal internal static unsafe partial class InternalIO { - private static readonly IntrinsicContext _intrinsicContext = new IntrinsicContext( - ); + private static readonly IntrinsicContext _intrinsicContext = new IntrinsicContext(); internal static IntrinsicContext Intrinsic { @@ -56,7 +55,8 @@ namespace StgSharp.Internal statCode = LoadIntrinsicFunction( cptr ); } - switch( statCode ) { + switch( statCode ) + { case 0: //Dialogue.PostError(new PlatformNotSupportedException("No SIMD instructions supported on current hardware platform")); @@ -69,8 +69,7 @@ namespace StgSharp.Internal [LibraryImport( SSC_libName, EntryPoint = "load_intrinsic_function" )] [UnmanagedCallConv( CallConvs = [typeof( CallConvCdecl )] )] - private static partial int LoadIntrinsicFunction( - IntrinsicContext* context ); + private static partial int LoadIntrinsicFunction( IntrinsicContext* context ); } } \ No newline at end of file diff --git a/StgSharp.Common/Internal/StructDefine.cs b/StgSharp.Common/Internal/StructDefine.cs index 3f3aaeb1..63154de2 100644 --- a/StgSharp.Common/Internal/StructDefine.cs +++ b/StgSharp.Common/Internal/StructDefine.cs @@ -29,10 +29,10 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- -using StgSharp.Internal.OpenGL; - using StgSharp.Graphics.OpenGL; +using StgSharp.Internal.OpenGL; + using System; using System.Runtime.InteropServices; @@ -44,6 +44,18 @@ namespace StgSharp.Internal using GLFWbool = Boolean; + #region glad struct + + [StructLayout( LayoutKind.Sequential )] + internal struct GLsync + { + + public IntPtr Handle; + + } + + #endregion glad struct + //strucs defined in GLFW3.h #region GLFW3 struct @@ -60,7 +72,7 @@ namespace StgSharp.Internal void (* swapBuffers) (glfwWindow*); void (* swapInterval) (int); int (* extensionSupported) (const byte*); - GLFWglproc(*getProcAddress)(const byte*); + delegate*(*getProcAddress)(const byte*); void (* destroy) (glfwWindow*); */ @@ -490,9 +502,7 @@ namespace StgSharp.Internal internal unsafe struct GLFWlibrary { - [MarshalAs( - UnmanagedType.ByValArray, - SizeConst = glConst.GLFW_JOYSTICK_LAST + 1 )] + [MarshalAs( UnmanagedType.ByValArray, SizeConst = glConst.GLFW_JOYSTICK_LAST + 1 )] private GLFWjoystick[] joysticks = new GLFWjoystick[glConst.GLFW_JOYSTICK_LAST + 1]; private GLFWallocator allocator; @@ -946,17 +956,6 @@ namespace StgSharp.Internal #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/glfw.cs b/StgSharp.Common/Internal/glfw.cs index 0e479914..86689224 100644 --- a/StgSharp.Common/Internal/glfw.cs +++ b/StgSharp.Common/Internal/glfw.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="glfw.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -52,10 +52,7 @@ namespace StgSharp.Internal internal static unsafe partial void glfwInitHint( int hint, int value ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetVersion" )] - internal static unsafe partial void glfwGetVersion( - int* major, - int* minor, - int* rev ); + internal static unsafe partial void glfwGetVersion( int* major, int* minor, int* rev ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetVersionString" )] internal static unsafe partial byte* glfwGetVersionString(); @@ -64,8 +61,8 @@ namespace StgSharp.Internal internal static unsafe partial int glfwGetError( byte** description ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetErrorCallback" )] - internal static unsafe partial GLFWerrorfun glfwSetErrorCallback( - GLFWerrorfun callback ); + internal static unsafe partial delegate* glfwSetErrorCallback( + delegate* callback ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetMonitors" )] internal static unsafe partial IntPtr* glfwGetMonitors( int* count ); @@ -75,180 +72,154 @@ namespace StgSharp.Internal [LibraryImport( SSC_libName, EntryPoint = "glfwGetMonitorPos" )] internal static unsafe partial void glfwGetMonitorPos( - IntPtr monitor, - int* xpos, - int* ypos ); + IntPtr monitor, + int* xpos, + int* ypos ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetMonitorWorkarea" )] internal static unsafe partial void glfwGetMonitorWorkarea( - IntPtr monitor, - int* xpos, - int* ypos, - int* width, - int* height ); + IntPtr monitor, + int* xpos, + int* ypos, + int* width, + int* height ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetMonitorPhysicalSize" )] internal static unsafe partial void glfwGetMonitorPhysicalSize( - IntPtr monitor, - int* widthMM, - int* heightMM ); + IntPtr monitor, + int* widthMM, + int* heightMM ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetMonitorContentScale" )] internal static unsafe partial void glfwGetMonitorContentScale( - IntPtr monitor, - float* xscale, - float* yscale ); + IntPtr monitor, + float* xscale, + float* yscale ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetMonitorName" )] - internal static unsafe partial byte* glfwGetMonitorName( - IntPtr monitor ); + internal static unsafe partial byte* glfwGetMonitorName( IntPtr monitor ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetMonitorUserPointer" )] internal static unsafe partial void glfwSetMonitorUserPointer( - IntPtr monitor, - void* pointer ); + IntPtr monitor, + void* pointer ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetMonitorUserPointer" )] - internal static unsafe partial void* glfwGetMonitorUserPointer( - IntPtr monitor ); + internal static unsafe partial void* glfwGetMonitorUserPointer( IntPtr monitor ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetMonitorCallback" )] - internal static unsafe partial GLFWmonitorfun glfwSetMonitorCallback( - GLFWmonitorfun callback ); + internal static unsafe partial delegate* glfwSetMonitorCallback( + delegate* callback ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetVideoModes" )] internal static unsafe partial glfwVideomode* glfwGetVideoModes( - IntPtr monitor, - int* count ); + IntPtr monitor, + int* count ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetVideoMode" )] - internal static unsafe partial glfwVideomode* glfwGetVideoMode( - IntPtr monitor ); + internal static unsafe partial glfwVideomode* glfwGetVideoMode( IntPtr monitor ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetGamma" )] - internal static unsafe partial void glfwSetGamma( - IntPtr monitor, - float gamma ); + internal static unsafe partial void glfwSetGamma( IntPtr monitor, float gamma ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetGammaRamp" )] - internal static unsafe partial glfwGammaramp* glfwGetGammaRamp( - IntPtr monitor ); + internal static unsafe partial glfwGammaramp* glfwGetGammaRamp( IntPtr monitor ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetGammaRamp" )] - internal static unsafe partial void glfwSetGammaRamp( - IntPtr monitor, - glfwGammaramp* ramp ); + internal static unsafe partial void glfwSetGammaRamp( IntPtr monitor, glfwGammaramp* ramp ); [LibraryImport( SSC_libName, EntryPoint = "glfwDefaultWindowHints" )] internal static unsafe partial void glfwDefaultWindowHints(); [LibraryImport( SSC_libName, EntryPoint = "glfwWindowHint" )] - internal static unsafe partial void glfwWindowHint( - int hint, - int value ); + internal static unsafe partial void glfwWindowHint( int hint, int value ); [LibraryImport( SSC_libName, EntryPoint = "glfwWindowHintString" )] - internal static unsafe partial void glfwWindowHintString( - int hint, - byte* value ); + internal static unsafe partial void glfwWindowHintString( int hint, byte* value ); [LibraryImport( SSC_libName, EntryPoint = "glfwCreateWindow" )] internal static unsafe partial IntPtr glfwCreateWindow( - int width, - int height, - byte[] title, - IntPtr monitor, - IntPtr share ); + int width, + int height, + byte[] title, + IntPtr monitor, + IntPtr share ); [LibraryImport( SSC_libName, EntryPoint = "glfwDestroyWindow" )] internal static unsafe partial void glfwDestroyWindow( IntPtr window ); [LibraryImport( SSC_libName, EntryPoint = "glfwWindowShouldClose" )] - internal static unsafe partial int glfwWindowShouldClose( - IntPtr window ); + internal static unsafe partial int glfwWindowShouldClose( IntPtr window ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowShouldClose" )] - internal static unsafe partial void glfwSetWindowShouldClose( - IntPtr window, - int value ); + internal static unsafe partial void glfwSetWindowShouldClose( IntPtr window, int value ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowTitle" )] - internal static unsafe partial void glfwSetWindowTitle( - IntPtr window, - byte* title ); + internal static unsafe partial void glfwSetWindowTitle( IntPtr window, byte* title ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowIcon" )] internal static unsafe partial void glfwSetWindowIcon( - IntPtr window, - int count, - GLFWimage* images ); + IntPtr window, + int count, + GLFWimage* images ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetWindowPos" )] - internal static unsafe partial void glfwGetWindowPos( - IntPtr window, - int* xpos, - int* ypos ); + internal static unsafe partial void glfwGetWindowPos( IntPtr window, int* xpos, int* ypos ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowPos" )] - internal static unsafe partial void glfwSetWindowPos( - IntPtr window, - int xpos, - int ypos ); + internal static unsafe partial void glfwSetWindowPos( IntPtr window, int xpos, int ypos ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetWindowSize" )] internal static unsafe partial void glfwGetWindowSize( - IntPtr window, - int* width, - int* height ); + IntPtr window, + int* width, + int* height ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowSizeLimits" )] internal static unsafe partial void glfwSetWindowSizeLimits( - IntPtr window, - int minwidth, - int minheight, - int maxwidth, - int maxheight ); + IntPtr window, + int minwidth, + int minheight, + int maxwidth, + int maxheight ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowAspectRatio" )] internal static unsafe partial void glfwSetWindowAspectRatio( - IntPtr window, - int numer, - int denom ); + IntPtr window, + int numer, + int denom ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowSize" )] internal static unsafe partial void glfwSetWindowSize( - IntPtr window, - int width, - int height ); + IntPtr window, + int width, + int height ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetFramebufferSize" )] internal static unsafe partial void glfwGetFramebufferSize( - IntPtr window, - int* width, - int* height ); + IntPtr window, + int* width, + int* height ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetWindowFrameSize" )] internal static unsafe partial void glfwGetWindowFrameSize( - IntPtr window, - int* left, - int* top, - int* right, - int* bottom ); + IntPtr window, + int* left, + int* top, + int* right, + int* bottom ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetWindowContentScale" )] internal static unsafe partial void glfwGetWindowContentScale( - IntPtr window, - float* xscale, - float* yscale ); + IntPtr window, + float* xscale, + float* yscale ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetWindowOpacity" )] - internal static unsafe partial float glfwGetWindowOpacity( - IntPtr window ); + internal static unsafe partial float glfwGetWindowOpacity( IntPtr window ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowOpacity" )] - internal static unsafe partial void glfwSetWindowOpacity( - IntPtr window, - float opacity ); + internal static unsafe partial void glfwSetWindowOpacity( IntPtr window, float opacity ); [LibraryImport( SSC_libName, EntryPoint = "glfwIconifyWindow" )] internal static unsafe partial void glfwIconifyWindow( IntPtr window ); @@ -269,97 +240,80 @@ namespace StgSharp.Internal internal static unsafe partial void glfwFocusWindow( IntPtr window ); [LibraryImport( SSC_libName, EntryPoint = "glfwRequestWindowAttention" )] - internal static unsafe partial void glfwRequestWindowAttention( - IntPtr window ); + internal static unsafe partial void glfwRequestWindowAttention( IntPtr window ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetWindowMonitor" )] - internal static unsafe partial IntPtr glfwGetWindowMonitor( - IntPtr window ); + internal static unsafe partial IntPtr glfwGetWindowMonitor( IntPtr window ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowMonitor" )] internal static unsafe partial void glfwSetWindowMonitor( - IntPtr window, - IntPtr monitor, - int xpos, - int ypos, - int width, - int height, - int refreshRate ); + IntPtr window, + IntPtr monitor, + int xpos, + int ypos, + int width, + int height, + int refreshRate ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetWindowAttrib" )] - internal static unsafe partial int glfwGetWindowAttrib( - IntPtr window, - int attrib ); + internal static unsafe partial int glfwGetWindowAttrib( IntPtr window, int attrib ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowAttrib" )] internal static unsafe partial void glfwSetWindowAttrib( - IntPtr window, - int attrib, - int value ); + IntPtr window, + int attrib, + int value ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowUserPointer" )] - internal static unsafe partial void glfwSetWindowUserPointer( - IntPtr window, - void* pointer ); + internal static unsafe partial void glfwSetWindowUserPointer( IntPtr window, void* pointer ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetWindowUserPointer" )] - internal static unsafe partial void* glfwGetWindowUserPointer( - IntPtr window ); + internal static unsafe partial void* glfwGetWindowUserPointer( IntPtr window ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowPosCallback" )] - internal static unsafe partial GLFWwindowposfun glfwSetWindowPosCallback( - IntPtr window, - IntPtr callback ); + internal static unsafe partial delegate* glfwSetWindowPosCallback( + IntPtr window, + IntPtr callback ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowSizeCallback" )] - internal static unsafe partial GLFWwindowsizefun glfwSetWindowSizeCallback( - IntPtr window, - GLFWwindowsizefun callback ); + internal static unsafe partial delegate* glfwSetWindowSizeCallback( + IntPtr window, + delegate* callback ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowCloseCallback" )] - internal static unsafe partial GLFWwindowclosefun glfwSetWindowCloseCallback( - IntPtr window, - GLFWwindowclosefun callback ); + internal static unsafe partial delegate* glfwSetWindowCloseCallback( + IntPtr window, + delegate* callback ); - [LibraryImport( - SSC_libName, - EntryPoint = "glfwSetWindowRefreshCallback" )] - internal static unsafe partial GLFWwindowrefreshfun glfwSetWindowRefreshCallback( + [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowRefreshCallback" )] + internal static unsafe partial delegate* glfwSetWindowRefreshCallback( IntPtr window, - GLFWwindowrefreshfun callback ); + delegate* callback ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowFocusCallback" )] - internal static unsafe partial GLFWwindowfocusfun glfwSetWindowFocusCallback( - IntPtr window, - GLFWwindowfocusfun callback ); + internal static unsafe partial delegate* glfwSetWindowFocusCallback( + IntPtr window, + delegate* callback ); - [LibraryImport( - SSC_libName, - EntryPoint = "glfwSetWindowIconifyCallback" )] - internal static unsafe partial GLFWwindowiconifyfun glfwSetWindowIconifyCallback( - IntPtr window, - GLFWwindowiconifyfun callback ); + [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowIconifyCallback" )] + internal static unsafe partial delegate* glfwSetWindowIconifyCallback( + IntPtr window, + delegate* callback ); - [LibraryImport( - SSC_libName, - EntryPoint = "glfwSetWindowMaximizeCallback" )] - internal static unsafe partial GLFWwindowmaximizefun glfwSetWindowMaximizeCallback( - IntPtr window, - GLFWwindowmaximizefun callback ); + [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowMaximizeCallback" )] + internal static unsafe partial delegate* glfwSetWindowMaximizeCallback( + IntPtr window, + delegate* callback ); - [LibraryImport( - SSC_libName, - EntryPoint = "glfwSetFramebufferSizeCallback" )] + [LibraryImport( SSC_libName, EntryPoint = "glfwSetFramebufferSizeCallback" )] internal static unsafe partial FrameBufferSizeHandler glfwSetFramebufferSizeCallback( - IntPtr window, - IntPtr callback ); + IntPtr window, + IntPtr callback ); - [LibraryImport( - SSC_libName, - EntryPoint = "glfwSetWindowContentScaleCallback" )] - internal static unsafe partial GLFWwindowcontentscalefun glfwSetWindowContentScaleCallback( - IntPtr window, - GLFWwindowcontentscalefun callback ); + [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowContentScaleCallback" )] + internal static unsafe partial delegate* glfwSetWindowContentScaleCallback( + IntPtr window, + delegate* callback ); [LibraryImport( SSC_libName, EntryPoint = "glfwPollEvents" )] internal static unsafe partial void glfwPollEvents(); @@ -368,134 +322,110 @@ namespace StgSharp.Internal internal static unsafe partial void glfwWaitEvents(); [LibraryImport( SSC_libName, EntryPoint = "glfwWaitEventsTimeout" )] - internal static unsafe partial void glfwWaitEventsTimeout( - double timeout ); + internal static unsafe partial void glfwWaitEventsTimeout( double timeout ); [LibraryImport( SSC_libName, EntryPoint = "glfwPostEmptyEvent" )] internal static unsafe partial void glfwPostEmptyEvent(); [LibraryImport( SSC_libName, EntryPoint = "glfwGetInputMode" )] - internal static unsafe partial int glfwGetInputMode( - IntPtr window, - int mode ); + internal static unsafe partial int glfwGetInputMode( IntPtr window, int mode ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetInputMode" )] - internal static unsafe partial void glfwSetInputMode( - IntPtr window, - int mode, - int value ); + internal static unsafe partial void glfwSetInputMode( IntPtr window, int mode, int value ); - [LibraryImport( - SSC_libName, - EntryPoint = "glfwRawMouseMotionSupported" )] + [LibraryImport( SSC_libName, EntryPoint = "glfwRawMouseMotionSupported" )] internal static unsafe partial int glfwRawMouseMotionSupported(); [LibraryImport( SSC_libName, EntryPoint = "glfwGetKeyName" )] - internal static unsafe partial byte* glfwGetKeyName( - int key, - int scancode ); + internal static unsafe partial byte* glfwGetKeyName( int key, int scancode ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetKeyScancode" )] internal static unsafe partial int glfwGetKeyScancode( int key ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetKey" )] - internal static unsafe partial KeyStatus glfwGetKey( - IntPtr window, - int key ); + internal static unsafe partial KeyStatus glfwGetKey( IntPtr window, int key ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetMouseButton" )] - internal static unsafe partial int glfwGetMouseButton( - IntPtr window, - int button ); + internal static unsafe partial int glfwGetMouseButton( IntPtr window, int button ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetCursorPos" )] internal static unsafe partial void glfwGetCursorPos( - IntPtr window, - double* xpos, - double* ypos ); + IntPtr window, + double* xpos, + double* ypos ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetCursorPos" )] internal static unsafe partial void glfwSetCursorPos( - IntPtr window, - double xpos, - double ypos ); + IntPtr window, + double xpos, + double ypos ); [LibraryImport( SSC_libName, EntryPoint = "glfwCreateCursor" )] internal static unsafe partial GLFWcursor* glfwCreateCursor( - GLFWimage* image, - int xhot, - int yhot ); + GLFWimage* image, + int xhot, + int yhot ); [LibraryImport( SSC_libName, EntryPoint = "glfwCreateStandardCursor" )] - internal static unsafe partial GLFWcursor* glfwCreateStandardCursor( - int shape ); + internal static unsafe partial GLFWcursor* glfwCreateStandardCursor( int shape ); [LibraryImport( SSC_libName, EntryPoint = "glfwDestroyCursor" )] - internal static unsafe partial void glfwDestroyCursor( - GLFWcursor* cursor ); + internal static unsafe partial void glfwDestroyCursor( GLFWcursor* cursor ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetCursor" )] - internal static unsafe partial void glfwSetCursor( - IntPtr window, - GLFWcursor* cursor ); + internal static unsafe partial void glfwSetCursor( IntPtr window, GLFWcursor* cursor ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetKeyCallback" )] - internal static unsafe partial GLFWkeyfun glfwSetKeyCallback( - IntPtr window, - GLFWkeyfun callback ); + internal static unsafe partial delegate* glfwSetKeyCallback( + IntPtr window, + delegate* callback ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetCharCallback" )] - internal static unsafe partial GLFWcharfun glfwSetCharCallback( - IntPtr window, - GLFWcharfun callback ); + internal static unsafe partial delegate* glfwSetCharCallback( + IntPtr window, + delegate* callback ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetCharModsCallback" )] - internal static unsafe partial GLFWcharmodsfun glfwSetCharModsCallback( - IntPtr window, - GLFWcharmodsfun callback ); + internal static unsafe partial delegate* glfwSetCharModsCallback( + IntPtr window, + delegate* callback ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetMouseButtonCallback" )] - internal static unsafe partial GLFWmousebuttonfun glfwSetMouseButtonCallback( - IntPtr window, - GLFWmousebuttonfun callback ); + internal static unsafe partial delegate* glfwSetMouseButtonCallback( + IntPtr window, + delegate* callback ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetCursorPosCallback" )] - internal static unsafe partial GLFWcursorposfun glfwSetCursorPosCallback( - IntPtr window, - GLFWcursorposfun callback ); + internal static unsafe partial delegate* glfwSetCursorPosCallback( + IntPtr window, + delegate* callback ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetCursorEnterCallback" )] - internal static unsafe partial GLFWcursorenterfun glfwSetCursorEnterCallback( - IntPtr window, - GLFWcursorenterfun callback ); + internal static unsafe partial delegate* glfwSetCursorEnterCallback( + IntPtr window, + delegate* callback ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetScrollCallback" )] - internal static unsafe partial GLFWscrollfun glfwSetScrollCallback( - IntPtr window, - GLFWscrollfun callback ); + internal static unsafe partial delegate* glfwSetScrollCallback( + IntPtr window, + delegate* callback ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetDropCallback" )] - internal static unsafe partial GLFWdropfun glfwSetDropCallback( - IntPtr window, - GLFWdropfun callback ); + internal static unsafe partial delegate* glfwSetDropCallback( + IntPtr window, + delegate* callback ); [LibraryImport( SSC_libName, EntryPoint = "glfwJoystickPresent" )] internal static unsafe partial int glfwJoystickPresent( int jid ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetJoystickAxes" )] - internal static unsafe partial float* glfwGetJoystickAxes( - int jid, - int* count ); + internal static unsafe partial float* glfwGetJoystickAxes( int jid, int* count ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetJoystickButtons" )] - internal static unsafe partial byte* glfwGetJoystickButtons( - int jid, - int* count ); + internal static unsafe partial byte* glfwGetJoystickButtons( int jid, int* count ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetJoystickHats" )] - internal static unsafe partial byte* glfwGetJoystickHats( - int jid, - int* count ); + internal static unsafe partial byte* glfwGetJoystickHats( int jid, int* count ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetJoystickName" )] internal static unsafe partial byte* glfwGetJoystickName( int jid ); @@ -504,41 +434,32 @@ namespace StgSharp.Internal internal static unsafe partial byte* glfwGetJoystickGUID( int jid ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetJoystickUserPointer" )] - internal static unsafe partial void glfwSetJoystickUserPointer( - int jid, - void* pointer ); + internal static unsafe partial void glfwSetJoystickUserPointer( int jid, void* pointer ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetJoystickUserPointer" )] - internal static unsafe partial void* glfwGetJoystickUserPointer( - int jid ); + internal static unsafe partial void* glfwGetJoystickUserPointer( int jid ); [LibraryImport( SSC_libName, EntryPoint = "glfwJoystickIsGamepad" )] internal static unsafe partial int glfwJoystickIsGamepad( int jid ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetJoystickCallback" )] - internal static unsafe partial GLFWjoystickfun glfwSetJoystickCallback( - GLFWjoystickfun callback ); + internal static unsafe partial delegate* glfwSetJoystickCallback( + delegate* callback ); [LibraryImport( SSC_libName, EntryPoint = "glfwUpdateGamepadMappings" )] - internal static unsafe partial int glfwUpdateGamepadMappings( - byte* str ); + internal static unsafe partial int glfwUpdateGamepadMappings( byte* str ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetGamepadName" )] internal static unsafe partial byte* glfwGetGamepadName( int jid ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetGamepadState" )] - internal static unsafe partial int glfwGetGamepadState( - int jid, - GLFWgamepadstate* state ); + internal static unsafe partial int glfwGetGamepadState( int jid, GLFWgamepadstate* state ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetClipboardString" )] - internal static unsafe partial void glfwSetClipboardString( - IntPtr window, - byte* str ); + internal static unsafe partial void glfwSetClipboardString( IntPtr window, byte* str ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetClipboardString" )] - internal static unsafe partial byte* glfwGetClipboardString( - IntPtr window ); + internal static unsafe partial byte* glfwGetClipboardString( IntPtr window ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetTime" )] internal static unsafe partial double glfwGetTime(); @@ -553,8 +474,7 @@ namespace StgSharp.Internal internal static unsafe partial ulong* glfwGetTimerFrequency(); [LibraryImport( SSC_libName, EntryPoint = "glfwMakeContextCurrent" )] - internal static unsafe partial void glfwMakeContextCurrent( - IntPtr window ); + internal static unsafe partial void glfwMakeContextCurrent( IntPtr window ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetCurrentContext" )] internal static unsafe partial IntPtr glfwGetCurrentContext(); @@ -566,26 +486,21 @@ namespace StgSharp.Internal internal static unsafe partial void glfwSwapInterval( int interval ); [LibraryImport( SSC_libName, EntryPoint = "glfwExtensionSupported" )] - internal static unsafe partial int glfwExtensionSupported( - byte* extension ); + internal static unsafe partial int glfwExtensionSupported( byte* extension ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetProcAddress", StringMarshalling = StringMarshalling.Utf8 )] - internal static unsafe partial IntPtr glfwGetProcAddress( - string procname ); + internal static unsafe partial IntPtr glfwGetProcAddress( string procname ); [LibraryImport( SSC_libName, EntryPoint = "glfwVulkanSupported" )] internal static unsafe partial int glfwVulkanSupported(); - [LibraryImport( - SSC_libName, - EntryPoint = "glfwGetRequiredInstanceExtensions" )] - internal static unsafe partial byte** glfwGetRequiredInstanceExtensions( - uint* count ); + [LibraryImport( SSC_libName, EntryPoint = "glfwGetRequiredInstanceExtensions" )] + internal static unsafe partial byte** glfwGetRequiredInstanceExtensions( uint* count ); - //[LibraryImport(InternalIO.SSC_libname, EntryPoint = "glfwGetInstanceProcAddress")] internal unsafe partial static GLFWvkproc glfwGetInstanceProcAddress(VkInstance instance, byte* procname); + //[LibraryImport(InternalIO.SSC_libname, EntryPoint = "glfwGetInstanceProcAddress")] internal unsafe partial static delegate* glfwGetInstanceProcAddress(VkInstance instance, byte* procname); //[LibraryImport(InternalIO.SSC_libname, EntryPoint = "glfwGetPhysicalDevicePresentationSupport")] internal unsafe partial static int glfwGetPhysicalDevicePresentationSupport(VkInstance instance, VkPhysicalDevice device, uint* queuefamily); //[LibraryImport(InternalIO.SSC_libname, EntryPoint = "glfwCreateWindowSurface")] internal unsafe partial static VkResult glfwCreateWindowSurface(VkInstance instance, glfwWindow* window, VkAllocationCallbacks* allocator, VkSurfaceKHR* surface); diff --git a/StgSharp.Common/MVVM/View/ViewBase.cs b/StgSharp.Common/MVVM/View/ViewBase.cs index 9ac51115..39e04161 100644 --- a/StgSharp.Common/MVVM/View/ViewBase.cs +++ b/StgSharp.Common/MVVM/View/ViewBase.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="ViewBase.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -46,15 +46,16 @@ using System.Security.Cryptography; using System.Text; using System.Threading; -namespace StgSharp.MVVM.View +namespace StgSharp.MVVM { /// - /// 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 . + /// 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 @@ -72,9 +73,7 @@ namespace StgSharp.MVVM.View private ViewPort context; - private delegate bool GetDataBindingEntryDelegate( - string name, - out DataBindingEntry entry ); + private delegate bool GetDataBindingEntryDelegate( string name, out DataBindingEntry entry ); public DataBindingEntry this[ string name ] { @@ -95,11 +94,7 @@ namespace StgSharp.MVVM.View get => unitCubeSize; } - public bool Activated - { - get; - internal set; - } + public bool Activated { get; internal set; } public int Height { @@ -113,7 +108,7 @@ namespace StgSharp.MVVM.View public IntPtr Monitor => context.Monitor; - public IntPtr ViewHandle => context.ViewPortID; + public IntPtr ViewHandle => context.ViewPortHandle; public IViewDesigner Designer { @@ -123,11 +118,7 @@ namespace StgSharp.MVVM.View public string ContextName => context.Name; - public string SelfName - { - get; - set; - } + public string SelfName { get; set; } public ViewPort Port { @@ -151,24 +142,27 @@ namespace StgSharp.MVVM.View set => _responder = value; } - public abstract void CustomizedInitialize( - [NotNull]ViewModelBase viewModelBinding ); + public abstract void CustomizedInitialize( [NotNull]ViewModelBase viewModelBinding ); /// - /// Get the status of a certain key on the keyboard. + /// Get the status of a certain key on the keyboard. /// - /// - /// representing if a key is pressed or released. + /// + /// + /// + /// + /// representing if a key is pressed or released. + /// [MethodImpl( MethodImplOptions.AggressiveInlining )] public KeyStatus GetKeyStatus( KeyboardKey key ) { - return InternalIO.glfwGetKey( context.ViewPortID, ( int )key ); + return InternalIO.glfwGetKey( context.ViewPortHandle, ( int )key ); } public void InternalInitialize( - string name, - (int, int, int) cubeSize, - [NotNull]ViewModelBase viewModelBinding ) + string name, + (int, int, int) cubeSize, + [NotNull]ViewModelBase viewModelBinding ) { SelfName = name; unitCubeSize = cubeSize; @@ -179,13 +173,12 @@ namespace StgSharp.MVVM.View CustomizedInitialize( viewModelBinding ); } - public abstract bool TryGetObjectReference( - string name, - out DataBindingEntry entry ); + public abstract bool TryGetObjectReference( string name, out DataBindingEntry entry ); public void Use() { - if( usedFrame == 0 ) { + if( usedFrame == 0 ) + { if( !ValidateInitialization() ) { throw new InvalidOperationException( "This view is not correctly initialized before rendering." ); @@ -197,9 +190,13 @@ namespace StgSharp.MVVM.View public bool ValidateInitialization() { - return ( _design != null ) && ( _render != null ) && ( getDataBindingEntry != null ) && ( _responder != null ) && _design.ValidateInitializing( - ) && _responder.ValidateInitializing() && _render.ValidateInitializing( - ); + return ( _design != null ) && + ( _render != null ) && + ( getDataBindingEntry != null ) && + ( _responder != null ) && + _design.ValidateInitializing() && + _responder.ValidateInitializing() && + _render.ValidateInitializing(); } protected abstract void Show(); diff --git a/StgSharp.Common/MVVM/View/ViewDesigner.cs b/StgSharp.Common/MVVM/View/ViewDesigner.cs index c0d1cb9f..f4cf9673 100644 --- a/StgSharp.Common/MVVM/View/ViewDesigner.cs +++ b/StgSharp.Common/MVVM/View/ViewDesigner.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="ViewDesigner.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -40,7 +40,7 @@ using System.Collections.Generic; using System.Net; using System.Text; -namespace StgSharp.MVVM.View +namespace StgSharp.MVVM { public abstract partial class ViewBase { @@ -57,12 +57,11 @@ namespace StgSharp.MVVM.View } /// - /// 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. + /// 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 + public abstract class ViewDesigner : IViewDesigner where TView: ViewBase { private KeyboardButtonGroup currentButtonGroup; @@ -82,10 +81,10 @@ namespace StgSharp.MVVM.View } public CharacterLineIndexImage CreateCharacterLine( - int length, - char blankFilling, - PlainGeometryMesh tittle, - IEnumerable<(char, PlainGeometryMesh)> charList ) + int length, + char blankFilling, + PlainGeometryMesh tittle, + IEnumerable<(char, PlainGeometryMesh)> charList ) { CharacterLineIndexImage ret = new CharacterLineIndexImage( length, blankFilling, tittle, charList ); @@ -94,17 +93,19 @@ namespace StgSharp.MVVM.View } public TriggerButton CreateKeyboardButton( - Rectangle bonding, - TextureProvider defaultAnimation, - bool isEnable ) + Rectangle bonding, + TextureProvider defaultAnimation, + bool isEnable ) { TriggerButton ret = new TriggerButton(); ret.BoundingBox = bonding; ret.Texture = defaultAnimation; - if( isEnable ) { + if( isEnable ) + { ret.IsDisabled = false; ret.Enable(); - } else { + } else + { ret.IsDisabled = true; ret.Disable(); } @@ -113,11 +114,11 @@ namespace StgSharp.MVVM.View } public TButtonGroup CreateKeyboardButtonGroup( - IClickTrigger leftBidning, - IClickTrigger rightBinding, - IClickTrigger upBinding, - IClickTrigger downBinding, - IClickTrigger confirmBinding ) + IClickTrigger leftBidning, + IClickTrigger rightBinding, + IClickTrigger upBinding, + IClickTrigger downBinding, + IClickTrigger confirmBinding ) where TButtonGroup: KeyboardButtonGroup, new() { TButtonGroup ret = new TButtonGroup(); diff --git a/StgSharp.Common/MVVM/View/ViewRender.cs b/StgSharp.Common/MVVM/View/ViewRender.cs index 470d1894..7a682898 100644 --- a/StgSharp.Common/MVVM/View/ViewRender.cs +++ b/StgSharp.Common/MVVM/View/ViewRender.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="ViewRender.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using StgSharp.Graphics; using StgSharp.HighPerformance; @@ -37,19 +36,15 @@ using System; using System.Collections.Generic; using System.Linq; -namespace StgSharp.MVVM.View +namespace StgSharp.MVVM { public abstract partial class ViewBase { - protected internal interface IViewRender - where TView: ViewBase + protected internal interface IViewRender where TView: ViewBase { - RenderStream this[ DataLabel renderName ] - { - get; - } + RenderStream this[ DataLabel renderName ] { get; } void CustomizedInitialize(); @@ -61,8 +56,7 @@ namespace StgSharp.MVVM.View } - protected abstract class ViewRender : IViewRender - where TView: ViewBase + protected abstract class ViewRender : IViewRender where TView: ViewBase { protected ViewRender( TView binding ) @@ -73,14 +67,15 @@ namespace StgSharp.MVVM.View public RenderStream this[ DataLabel renderName ] { - get => _render.TryGetValue( - renderName, out RenderStream stream ) ? + get => _render.TryGetValue( renderName, out RenderStream stream ) ? stream : ( null! ); protected set { - if( _render.ContainsKey( renderName ) ) { + if( _render.ContainsKey( renderName ) ) + { _render[ renderName ] = value; - } else { + } else + { _render.Add( renderName, value ); } } @@ -106,8 +101,7 @@ namespace StgSharp.MVVM.View return ret; } - public T CreateRenderStream( ViewPort vp ) - where T: RenderStream, new() + public T CreateRenderStream( ViewPort vp ) where T: RenderStream, new() { T ret = new T(); ret.Initialize( vp, Binding.TimeProvider ); diff --git a/StgSharp.Common/MVVM/View/ViewResponder.cs b/StgSharp.Common/MVVM/View/ViewResponder.cs index d7719d27..a792c87c 100644 --- a/StgSharp.Common/MVVM/View/ViewResponder.cs +++ b/StgSharp.Common/MVVM/View/ViewResponder.cs @@ -37,7 +37,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace StgSharp.MVVM.View +namespace StgSharp.MVVM { public partial class ViewBase { @@ -45,14 +45,9 @@ namespace StgSharp.MVVM.View protected interface IViewResponder where TVIew: ViewBase { - Action? this[ IClickTrigger trigger ] - { - get; - set; - } + Action? this[ IClickTrigger trigger ] { get; set; } - void CustomizedInitialize( - Func keyRegister ); + void CustomizedInitialize( Func keyRegister ); void Initialize( MethodLookUpDelegate methodGetter ); @@ -62,8 +57,7 @@ namespace StgSharp.MVVM.View } - protected abstract class ViewResponder : IViewResponder - where TView: ViewBase + protected abstract class ViewResponder : IViewResponder where TView: ViewBase { private bool _isInitialized; @@ -82,20 +76,17 @@ namespace StgSharp.MVVM.View public Action? this[ IClickTrigger trigger ] #pragma warning restore CA1043 { - get => keyCallbackIndex.TryGetValue( - trigger, out Action callback ) ? - callback : null; + get => keyCallbackIndex.TryGetValue( trigger, out Action callback ) ? + callback : null; set { - if( keyCallbackIndex.TryGetValue( - trigger, out Action callback ) ) { + if( keyCallbackIndex.TryGetValue( trigger, out Action callback ) ) + { callback += value; - } else { + } else + { keyCallbackIndex.Add( - trigger, - value ?? - throw new ArgumentNullException( - nameof( value ) ) ); + trigger, value ?? throw new ArgumentNullException( nameof( value ) ) ); } } } @@ -103,7 +94,7 @@ namespace StgSharp.MVVM.View protected TView Binding => _binding; public abstract void CustomizedInitialize( - Func keyRegister ); + Func keyRegister ); public void Initialize( MethodLookUpDelegate methodGetter ) { @@ -112,11 +103,13 @@ namespace StgSharp.MVVM.View } CustomizedInitialize( ( trigger, name ) => { - if( !nameToCallbackMap.TryGetValue( - name, out Action ret ) ) { - if( methodGetter( name, out Action lookup ) ) { + if( !nameToCallbackMap.TryGetValue( name, out Action ret ) ) + { + if( methodGetter( name, out Action lookup ) ) + { this[ trigger ] = lookup; - } else { + } else + { throw new InvalidOperationException( $"Cannot find method named {name} in binded view model" ); } @@ -127,10 +120,11 @@ namespace StgSharp.MVVM.View public void ProcessUserInput() { - foreach( KeyValuePair pair in keyCallbackIndex ) { - if( InternalIO.glfwGetKey( - _binding.ViewHandle, - pair.Key.TargetKeyOrButtonID ) == pair.Key.TriggeredStatus ) { + foreach( KeyValuePair pair in keyCallbackIndex ) + { + if( InternalIO.glfwGetKey( _binding.ViewHandle, + pair.Key.TargetKeyOrButtonID ) == + pair.Key.TriggeredStatus ) { pair.Value(); } } diff --git a/StgSharp.Common/MVVM/ViewModel/DataBinding.cs b/StgSharp.Common/MVVM/ViewModel/DataBinding.cs index 5477ce5c..4f95b533 100644 --- a/StgSharp.Common/MVVM/ViewModel/DataBinding.cs +++ b/StgSharp.Common/MVVM/ViewModel/DataBinding.cs @@ -40,14 +40,12 @@ namespace StgSharp.MVVM.ViewModel { #nullable enable - [UnmanagedFunctionPointer( CallingConvention.Cdecl )] +[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 delegate bool MethodLookUpDelegate( string name, out Action callback ); public abstract partial class ViewModelBase { @@ -55,24 +53,28 @@ namespace StgSharp.MVVM.ViewModel public bool MethodLookup( string methodName, out Action callback ) { MethodInfo method = GetType().GetMethod( methodName )!; - if( method == null ) { + if( method == null ) + { callback = null!; return false; } - try { - callback = ( Action )Delegate.CreateDelegate( - typeof( Action ), this, methodName ); + try + { + callback = ( Action )Delegate.CreateDelegate( typeof( Action ), this, methodName ); return true; } - catch( MissingMethodException ) { + catch( MissingMethodException ) + { callback = null!; return false; } - catch( MethodAccessException ) { + catch( MethodAccessException ) + { callback = null!; return false; } - catch( Exception ) { + catch( Exception ) + { throw; } } @@ -88,8 +90,8 @@ namespace StgSharp.MVVM.ViewModel [FieldOffset( 0 )] private M128 _mask; public DataBindingEntry( - [NotNull] BindingDataGetter gettingCallback, - [NotNull] BindingDataSetter settingCallback ) + [NotNull] BindingDataGetter gettingCallback, + [NotNull] BindingDataSetter settingCallback ) { getterPtr = Marshal.GetFunctionPointerForDelegate( gettingCallback ); setterPtr = Marshal.GetFunctionPointerForDelegate( settingCallback ); @@ -130,20 +132,15 @@ namespace StgSharp.MVVM.ViewModel public void SetValue( ref object value ) { - ( ( delegate* unmanaged[Cdecl] )setterPtr )( - ref value ); + ( ( delegate* unmanaged[Cdecl] )setterPtr )( ref value ); } - public static bool operator !=( - DataBindingEntry left, - DataBindingEntry right ) + public static bool operator !=( DataBindingEntry left, DataBindingEntry right ) { return left._mask != right._mask; } - public static bool operator ==( - DataBindingEntry left, - DataBindingEntry right ) + public static bool operator ==( DataBindingEntry left, DataBindingEntry right ) { return left._mask == right._mask; } diff --git a/StgSharp.Common/MVVM/ViewModel/ShowViewPort.cs b/StgSharp.Common/MVVM/ViewModel/ShowViewPort.cs index c4e737a9..af5937aa 100644 --- a/StgSharp.Common/MVVM/ViewModel/ShowViewPort.cs +++ b/StgSharp.Common/MVVM/ViewModel/ShowViewPort.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="ShowViewPort.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -30,7 +30,7 @@ //----------------------------------------------------------------------- using StgSharp.Controls; using StgSharp.Graphics; -using StgSharp.MVVM.View; +using StgSharp.MVVM; using StgSharp.Threading; using StgSharp.Timing; @@ -54,14 +54,13 @@ namespace StgSharp.MVVM.ViewModel } /// - /// CustomizeInit this form and render it on screen, and respond with operation + /// CustomizeInit this form and render it on screen, and respond with operation /// public unsafe void UseViewModel( string viewEntryName ) { CustomizeInitialize(); UseViewInNextFrame( viewEntryName ); - TimeSpanAwaitingToken fpsCountingToken = fpsCountProvider.ParticipantSpanAwaiting( - 1 ); + TimeSpanAwaitingToken fpsCountingToken = fpsCountProvider.ParticipantSpanAwaiting( 1 ); fpsCountingToken.TimeSpanRefreshed += CountFps; fpsCountingToken.MissTimeSpanRefreshed += CountFps; if( _nextView != _currentView ) { @@ -69,21 +68,25 @@ namespace StgSharp.MVVM.ViewModel } Thread renderThread = new Thread( ( token ) => { - try { + try + { ProcessFrameWithoutEvent(); } - catch( Exception ex ) { + catch( Exception ex ) + { InternalIO.InternalWriteLog( - $"Critical error when rendering:\n" + $"{ex}", - LogType.Error ); + $"Critical error when rendering:\n" + $"{ex}", LogType.Error ); ShouldClose = true; + throw; } } ); renderThread.Start(); /**/ using( TimeSpanAwaitingToken eventAwaitingToken = frameTimeProvider.ParticipantSpanAwaiting( - 1 ) ) { - while( _closed ) { + 1 ) ) + { + while( _closed ) + { if( _nextView != _currentView ) { Interlocked.Exchange( ref _currentView, _nextView ); } @@ -112,16 +115,12 @@ namespace StgSharp.MVVM.ViewModel { 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 ) ) { + if( 0 == InternalIO.glfwWindowShouldClose( this.viewPortDisplay.ViewPortHandle ) ) + { CurrentView.Use(); RenderStream.PollEvents(); } @@ -130,9 +129,11 @@ namespace StgSharp.MVVM.ViewModel private void ProcessFrameWithoutEvent() { using( TimeSpanAwaitingToken renderAwaitingToken = frameTimeProvider.ParticipantSpanAwaiting( - 1 ) ) { + 1 ) ) + { renderAwaitingToken.TimeSpanRefreshed += ( _, _ ) => { }; - while( _closed ) { + while( _closed ) + { foreach( ViewPort context in CurrentView.Render ) { context.FlushSize(); } diff --git a/StgSharp.Common/MVVM/ViewModel/ViewManage.cs b/StgSharp.Common/MVVM/ViewModel/ViewManage.cs index a8959655..d50bf863 100644 --- a/StgSharp.Common/MVVM/ViewModel/ViewManage.cs +++ b/StgSharp.Common/MVVM/ViewModel/ViewManage.cs @@ -30,7 +30,7 @@ //----------------------------------------------------------------------- using StgSharp.Graphics; using StgSharp.Graphics.OpenGL; -using StgSharp.MVVM.View; +using StgSharp.MVVM; using System; using System.Collections.Generic; @@ -44,9 +44,7 @@ namespace StgSharp.MVVM.ViewModel private Dictionary allView; - public T CreateAndBindView( - string name, - (int x, int y, int z) unitCubeSize ) + public T CreateAndBindView( string name, (int x, int y, int z) unitCubeSize ) where T: ViewBase, new() { T ret = new T(); diff --git a/StgSharp.Common/MVVM/ViewModel/ViewModel.cs b/StgSharp.Common/MVVM/ViewModel/ViewModel.cs index 9b073031..8abb9480 100644 --- a/StgSharp.Common/MVVM/ViewModel/ViewModel.cs +++ b/StgSharp.Common/MVVM/ViewModel/ViewModel.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="ViewModel.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -32,7 +32,7 @@ using StgSharp.Controlling.UsrActivity; using StgSharp.Graphics; using StgSharp.Graphics.OpenGL; using StgSharp.Math; -using StgSharp.MVVM.View; +using StgSharp.MVVM; using StgSharp.MVVM.ViewModel; using StgSharp.Threading; using StgSharp.Timing; @@ -69,12 +69,10 @@ namespace StgSharp.MVVM.ViewModel { viewPortDisplay = new ViewPort(); allView = new(); - fpsCountProvider = new TimeSpanProvider( - 1.0, TimeSpanProvider.DefaultProvider ); + fpsCountProvider = new TimeSpanProvider( 1.0, TimeSpanProvider.DefaultProvider ); _frameSpeed = 0; _frameCount = 0; - long frameLength = ( FrameSpeed > 0 ) ? - ( ( 1000L * 1000L ) / FrameSpeed ) : 0; + long frameLength = ( FrameSpeed > 0 ) ? ( ( 1000L * 1000L ) / FrameSpeed ) : 0; frameTimeProvider = new TimeSpanProvider( frameLength, TimeSpanProvider.DefaultProvider ); FrameSizeCallback = DefaultFrameRewsizeCallback; @@ -84,12 +82,10 @@ namespace StgSharp.MVVM.ViewModel { viewPortDisplay = new ViewPort(); allView = new(); - fpsCountProvider = new TimeSpanProvider( - 1.0, TimeSpanProvider.DefaultProvider ); + fpsCountProvider = new TimeSpanProvider( 1.0, TimeSpanProvider.DefaultProvider ); _frameSpeed = 0; _frameCount = 0; - long _frameLength = ( FrameSpeed > 0 ) ? - ( ( long )( 1000 * frameLength ) ) : 0; + long _frameLength = ( FrameSpeed > 0 ) ? ( ( long )( 1000 * frameLength ) ) : 0; frameTimeProvider = new TimeSpanProvider( _frameLength, TimeSpanProvider.DefaultProvider ); FrameSizeCallback = DefaultFrameRewsizeCallback; @@ -99,12 +95,10 @@ namespace StgSharp.MVVM.ViewModel { viewPortDisplay = vBinding; allView = new(); - fpsCountProvider = new TimeSpanProvider( - 1.0, TimeSpanProvider.DefaultProvider ); + fpsCountProvider = new TimeSpanProvider( 1.0, TimeSpanProvider.DefaultProvider ); _frameSpeed = 0; _frameCount = 0; - long frameLength = ( frameSpeed > 0 ) ? - ( ( 1000L * 1000L ) / frameSpeed ) : 0; + long frameLength = ( frameSpeed > 0 ) ? ( ( 1000L * 1000L ) / frameSpeed ) : 0; frameTimeProvider = new TimeSpanProvider( frameLength, TimeSpanProvider.DefaultProvider ); FrameSizeCallback = DefaultFrameRewsizeCallback; @@ -114,12 +108,10 @@ namespace StgSharp.MVVM.ViewModel { viewPortDisplay = vBinding; allView = new(); - fpsCountProvider = new TimeSpanProvider( - 1.0, TimeSpanProvider.DefaultProvider ); + fpsCountProvider = new TimeSpanProvider( 1.0, TimeSpanProvider.DefaultProvider ); _frameSpeed = 0; _frameCount = 0; - long _frameLength = ( frameLength > 0 ) ? - ( ( long )( 1000 * frameLength ) ) : 0; + long _frameLength = ( frameLength > 0 ) ? ( ( long )( 1000 * frameLength ) ) : 0; frameTimeProvider = new TimeSpanProvider( _frameLength, TimeSpanProvider.DefaultProvider ); FrameSizeCallback = DefaultFrameRewsizeCallback; @@ -129,8 +121,7 @@ namespace StgSharp.MVVM.ViewModel { get { - if( this.TryGetObjectReference( - name, out DataBindingEntry entry ) ) { + if( this.TryGetObjectReference( name, out DataBindingEntry entry ) ) { return entry; } throw new KeyNotFoundException(); @@ -139,10 +130,9 @@ namespace StgSharp.MVVM.ViewModel public bool ShouldClose { - get => InternalIO.glfwWindowShouldClose( - viewPortDisplay.ViewPortID ) != 0; + get => InternalIO.glfwWindowShouldClose( viewPortDisplay.ViewPortHandle ) != 0; set => InternalIO.glfwSetWindowShouldClose( - viewPortDisplay.ViewPortID, value ? 1 : 0 ); + viewPortDisplay.ViewPortHandle, value ? 1 : 0 ); } public int CurrentFrameCount => frameTimeProvider.CurrentSpan; @@ -150,7 +140,7 @@ namespace StgSharp.MVVM.ViewModel public int FrameSpeed => _frameSpeed; /// - /// Height of this form, represent in + /// Height of this form, represent in /// public int Height { @@ -158,7 +148,7 @@ namespace StgSharp.MVVM.ViewModel } /// - /// Width of this form, represent in + /// Width of this form, represent in /// public int Width { @@ -167,7 +157,7 @@ namespace StgSharp.MVVM.ViewModel public unsafe IntPtr WindowID { - get => viewPortDisplay.ViewPortID; + get => viewPortDisplay.ViewPortHandle; } public string Name @@ -176,7 +166,7 @@ namespace StgSharp.MVVM.ViewModel } /// - /// Width of this form, represent in + /// Width of this form, represent in /// public Vec2 Size { @@ -194,10 +184,9 @@ namespace StgSharp.MVVM.ViewModel set { _resizeCallback = value; - IntPtr handlerPtr = Marshal.GetFunctionPointerForDelegate( - value ); + IntPtr handlerPtr = Marshal.GetFunctionPointerForDelegate( value ); InternalIO.glfwSetFramebufferSizeCallback( - viewPortDisplay.ViewPortID, handlerPtr ); + viewPortDisplay.ViewPortHandle, handlerPtr ); } } #pragma warning restore CA1044 @@ -205,51 +194,49 @@ namespace StgSharp.MVVM.ViewModel public abstract void CustomizeInitialize(); /// - /// Set the size limit of current form + /// Set the size limit of current form /// - /// - /// Minimum size of current form. In form of a of (width,height) + /// + /// Minimum size of current form. In form of a of (width,height) /// - /// - /// Maximum 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 ); + this.viewPortDisplay.ViewPortHandle, ( int )minSize.X, ( int )minSize.Y, + ( int )maxSize.X, ( int )maxSize.Y ); } /// - /// Set the size limit of current form + /// 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 + /// + /// 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 ) + public void SetSizeLimit( int minWidth, int minHeight, int maxWidth, int maxHeight ) { ThreadHelper.MainThreadAssert(); InternalIO.glfwSetWindowSizeLimits( - this.viewPortDisplay.ViewPortID, minWidth, minHeight, maxWidth, - maxHeight ); + this.viewPortDisplay.ViewPortHandle, minWidth, minHeight, maxWidth, maxHeight ); } - public abstract bool TryGetObjectReference( - string name, - out DataBindingEntry entry ); + public abstract bool TryGetObjectReference( string name, out DataBindingEntry entry ); - private void DefaultFrameRewsizeCallback( - IntPtr windowHandle, - int width, - int height ) + private void DefaultFrameRewsizeCallback( IntPtr windowHandle, int width, int height ) { ViewPort.GetExistedViewPort( windowHandle, out ViewPort vp ); vp.RequestFlushSizeInNextFrame( width, height ); diff --git a/StgSharp.Common/MVVM/ViewPort.cs b/StgSharp.Common/MVVM/ViewPort.cs index 62992c26..39b88d0a 100644 --- a/StgSharp.Common/MVVM/ViewPort.cs +++ b/StgSharp.Common/MVVM/ViewPort.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="ViewPort.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -31,6 +31,7 @@ using System; using System.Collections.Concurrent; using System.Diagnostics; +using System.Diagnostics.Contracts; using System.Runtime.CompilerServices; using System.Text; using System.Threading; @@ -53,31 +54,27 @@ namespace StgSharp.MVVM 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." ); + ViewPortHandle = InternalIO.glfwCreateWindow( + _newWidth, _newHeight, Encoding.UTF8.GetBytes( Name ), Monitor, IntPtr.Zero ); + if( ViewPortHandle == IntPtr.Zero ) { + throw new InvalidOperationException( "Unable to create viewport handle." ); } - _handleToViewPortIndex.TryAdd( ViewPortID, this ); + _handleToViewPortIndex.TryAdd( ViewPortHandle, this ); } - public ViewPort(int width, int height, string name, IntPtr monitor ) + 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." ); + ViewPortHandle = InternalIO.glfwCreateWindow( + _newWidth, _newHeight, Encoding.UTF8.GetBytes( Name ), Monitor, IntPtr.Zero ); + if( ViewPortHandle == IntPtr.Zero ) { + throw new InvalidOperationException( "Unable to create viewport handle." ); } - _handleToViewPortIndex.TryAdd( ViewPortID, this ); + _handleToViewPortIndex.TryAdd( ViewPortHandle, this ); } public unsafe int Height @@ -92,35 +89,17 @@ namespace StgSharp.MVVM internal set { Interlocked .Exchange( ref _width, value ); } } - public IntPtr GraphicHandle - { - get; - internal set; - } + public IntPtr GraphicHandle { get; internal set; } - public IntPtr Monitor - { - get; - internal set; - } + public IntPtr Monitor { get; internal set; } - public IntPtr ViewPortID - { - get; - private set; - } + public IntPtr ViewPortHandle { get; private set; } - public string Name - { - get; - set; - } + public string Name { get; set; } //[BlueprintNodeExecution] [MethodImpl( MethodImplOptions.AggressiveInlining )] - public static bool GetExistedViewPort( - IntPtr handle, - out ViewPort port ) + public static bool GetExistedViewPort( IntPtr handle, out ViewPort port ) { return _handleToViewPortIndex.TryGetValue( handle, out port ); } diff --git a/StgSharp.Common/Math/Graphic/Camera.cs b/StgSharp.Common/Math/Graphic/Camera.cs index 14195980..d5f3c5ff 100644 --- a/StgSharp.Common/Math/Graphic/Camera.cs +++ b/StgSharp.Common/Math/Graphic/Camera.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="Camera.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -96,28 +96,34 @@ namespace StgSharp.Graphics } } + public Matrix44 CameraMatrix() + { + return Projection * View; + } + public void DisplayGLtypeDefinition() { Console.WriteLine( "uniform matrix4x4 cameraName;" ); } /// - /// Get all uniform related to this . + /// Get all uniform related to this . /// - /// Shader program requires this camera. - /// - /// ContextName of all related uniforms. If you fallow form from + /// + /// Shader program requires this camera. /// - /// - public unsafe void GainAllUniforms( - ShaderProgram source, - params string[] uniformName ) + /// + /// ContextName of all related uniforms. If you fallow form from + /// + /// + /// + /// + public unsafe void GainAllUniforms( ShaderProgram source, params string[] uniformName ) { if( uniformName is null || uniformName.Length != 1 ) { throw new ArgumentException( - "Camera needs exactly one uniform.", - nameof( uniformName ) ); + "Camera needs exactly one uniform.", nameof( uniformName ) ); } convertedUniform = source.GetUniform( uniformName[ 0 ] ); } @@ -143,19 +149,19 @@ namespace StgSharp.Graphics public unsafe void SetAllUniforms() { //Console.WriteLine(Projection * ViewBase); - OpenGL.OpenGLFunction.CurrentGL - .SetUniformValue( convertedUniform, Projection * View ); + OpenGL.OpenGLFunction.CurrentGL.SetUniformValue( convertedUniform, Projection * View ); } public void SetViewDirection( Vec3 position, Vec3 target, Vec3 up ) { Vec3 direction = position - target; - if( ( position.reg == cameraAtt.colum3.reg ) && ( this.up == up ) && ( cameraAtt.colum2.reg == - direction.reg ) ) { - //no difference with precious value + if( ( position.reg == cameraAtt.colum3.reg ) && + ( this.up == up ) && + ( cameraAtt.colum2.reg == direction.reg ) ) { return; } - if( direction.GetLength() == 0 ) { + if( direction.GetLength() == 0 ) + { //deadlock throw new ArgumentException(); } @@ -171,10 +177,10 @@ namespace StgSharp.Graphics Vec3 right = Linear.Orthogonalize( Linear.Cross( up, direction ) ); - cameraAtt.colum0.reg = right. reg; + cameraAtt.colum0.reg = right.reg; cameraAtt.colum1.reg = up.reg; cameraAtt.colum2.reg = direction.reg; - cameraAtt.colum3.reg = position. reg; + cameraAtt.colum3.reg = position.reg; InternalPitch(); InternalRow(); @@ -182,10 +188,10 @@ namespace StgSharp.Graphics } public void SetViewRange( - Radius fovRadius, - Vec2 size, - Vec2 offset, - (float front, float back) dephRange ) + Radius fovRadius, + Vec2 size, + Vec2 offset, + (float front, float back) dephRange ) { float distance = _target.GetLength(), @@ -193,8 +199,7 @@ namespace StgSharp.Graphics far = distance + dephRange.back, offsetX = offset.X, offsetY = offset.Y, - width = Scaler.Abs( - GeometryScaler.Tan( fovRadius / 2 ) * near * 2 ), + width = Scaler.Abs( GeometryScaler.Tan( fovRadius / 2 ) * near * 2 ), height = ( width * size.Y ) / size.X; _projection.colum0.X = ( 2 * near ) / width; @@ -257,8 +262,7 @@ namespace StgSharp.Graphics { _isLookAtAvailable = false; - Matrix32 partialCoord = new Matrix32( - cameraAtt.colum1.vec, cameraAtt.colum2.vec ); + Matrix32 partialCoord = new Matrix32( cameraAtt.colum1.vec, cameraAtt.colum2.vec ); float angle = _pitch._radius; Matrix22 rotation = new Matrix22( @@ -275,8 +279,7 @@ namespace StgSharp.Graphics { _isLookAtAvailable = false; - Matrix32 partialCoord = new Matrix32( - cameraAtt.colum0.vec, cameraAtt.colum1.vec ); + Matrix32 partialCoord = new Matrix32( cameraAtt.colum0.vec, cameraAtt.colum1.vec ); float angle = _row._radius; Matrix22 rotation = new Matrix22( @@ -293,8 +296,7 @@ namespace StgSharp.Graphics { _isLookAtAvailable = false; - Matrix32 partialCoord = new Matrix32( - cameraAtt.colum0.vec, cameraAtt.colum2.vec ); + 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 ), diff --git a/StgSharp.Common/Math/HighPrecision/Vec2HP.cs b/StgSharp.Common/Math/HighPrecision/Vec2HP.cs new file mode 100644 index 00000000..a93f1c91 --- /dev/null +++ b/StgSharp.Common/Math/HighPrecision/Vec2HP.cs @@ -0,0 +1,67 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Vec2HP.cs" +// Project: World +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.HighPerformance; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Math.HighPrecision +{ + [StructLayout( LayoutKind.Explicit, Pack = 16 )] + public struct Vec2HP : IVector + { + + [FieldOffset( 0 )] private M256 buffer; + [FieldOffset( 0 )] private Vector256 clrBuffer; + + [FieldOffset( 0 * sizeof( double ) )] public double X; + [FieldOffset( 1 * sizeof( double ) )] public double Y; + + public Vec2HP( double x, double y ) + { + this.X = x; + this.Y = y; + Unsafe.SkipInit( out buffer ); + Unsafe.SkipInit( out clrBuffer ); + } + + public static Vec2HP Zero => new Vec2HP( 0, 0 ); + + public static Vec2HP One => new Vec2HP( 1, 1 ); + + } +} diff --git a/StgSharp.Common/Math/HighPrecision/Vec3HP.cs b/StgSharp.Common/Math/HighPrecision/Vec3HP.cs new file mode 100644 index 00000000..d70f5452 --- /dev/null +++ b/StgSharp.Common/Math/HighPrecision/Vec3HP.cs @@ -0,0 +1,86 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Vec3HP.cs" +// Project: StepVisualizer +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.HighPerformance; + +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Math.HighPrecision +{ + [StructLayout( LayoutKind.Explicit, Pack = 16 )] + public struct Vec3HP : IVector + { + + [FieldOffset( 0 )] internal M256 buffer; + [FieldOffset( 0 )] internal Vector256 clrBuffer; + [FieldOffset( 0 * sizeof( double ) )] public double X; + [FieldOffset( 1 * sizeof( double ) )] public double Y; + [FieldOffset( 2 * sizeof( double ) )] public double Z; + + public Vec3HP() : this( 0, 0, 0 ) { } + + public Vec3HP( Vector256 clrBuffer ) + { + this.X = 0; + this.Y = 0; + this.Z = 0; + Unsafe.SkipInit( out buffer ); + Unsafe.SkipInit( out this.clrBuffer ); + this.clrBuffer = clrBuffer; + } + + public Vec3HP( double x, double y, double z ) + { + this.X = x; + this.Y = y; + this.Z = z; + Unsafe.SkipInit( out buffer ); + Unsafe.SkipInit( out clrBuffer ); + } + + public static Vec3HP Zero => new Vec3HP( 1, 1, 1 ); + + public static Vec3HP One => throw new NotImplementedException(); + + public override string ToString() + { + return $"Double precision 3D Vector<{X},{Y},{Z}>"; + } + + } +} diff --git a/StgSharp.Common/Math/HighPrecision/Vec4HP.cs b/StgSharp.Common/Math/HighPrecision/Vec4HP.cs new file mode 100644 index 00000000..92876dc4 --- /dev/null +++ b/StgSharp.Common/Math/HighPrecision/Vec4HP.cs @@ -0,0 +1,70 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Vec4HP.cs" +// Project: World +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.HighPerformance; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Math.HighPrecision +{ + [StructLayout( LayoutKind.Explicit, Pack =16 )] + public struct Vec4HP : IVector + { + + [FieldOffset( 0 )] private M256 buffer; + [FieldOffset( 0 )] private Vector256 clrBuffer; + [FieldOffset( 3 * sizeof( double ) )] public double W; + [FieldOffset( 0 * sizeof( double ) )] public double X; + [FieldOffset( 1 * sizeof( double ) )] public double Y; + [FieldOffset( 2 * sizeof( double ) )] public double Z; + + public Vec4HP( double x, double y, double z, double w ) + { + this.X = x; + this.Y = y; + this.Z = z; + this.W = w; + Unsafe.SkipInit( out buffer ); + Unsafe.SkipInit( out clrBuffer ); + } + + public static Vec4HP Zero => new Vec4HP( 0, 0, 0, 0 ); + + public static Vec4HP One => new Vec4HP( 1, 1, 1, 1 ); + + } +} diff --git a/StgSharp.Common/Math/Linear/IVector.cs b/StgSharp.Common/Math/Linear/IVector.cs index e033b654..0536a1db 100644 --- a/StgSharp.Common/Math/Linear/IVector.cs +++ b/StgSharp.Common/Math/Linear/IVector.cs @@ -40,27 +40,9 @@ namespace StgSharp.Math public interface IVector where TSelf: struct, IVector { - public static abstract TSelf Zero - { - get; - } + public static abstract TSelf Zero { get; } - public static abstract TSelf One - { - get; - } - - public Vec2 XY - { - get; - set; - } - - public Vec3 XYZ - { - get; - set; - } + public static abstract TSelf One { get; } } } diff --git a/StgSharp.Common/Math/Linear/Matrix22.cs b/StgSharp.Common/Math/Linear/Matrix22.cs index 99f9df32..cebf975d 100644 --- a/StgSharp.Common/Math/Linear/Matrix22.cs +++ b/StgSharp.Common/Math/Linear/Matrix22.cs @@ -96,7 +96,8 @@ namespace StgSharp.Math [MethodImpl( MethodImplOptions.AggressiveInlining )] internal void InternalTranspose() { - if( !isTransposed ) { + if( !isTransposed ) + { _transpose = _mat; float cache = _transpose.m10; _transpose.m10 = _transpose.m01; @@ -106,21 +107,17 @@ namespace StgSharp.Math } [MethodImpl( MethodImplOptions.AggressiveInlining )] - public static unsafe Matrix22 operator -( - Matrix22 left, - Matrix22 right ) + public static unsafe Matrix22 operator -( Matrix22 left, Matrix22 right ) { Matrix22 ret = new Matrix22(); - InternalIO.Intrinsic.sub_mat_2( &left._mat, &right._mat, - &ret._mat ); + InternalIO.Intrinsic.sub_mat_2( &left._mat, &right._mat, &ret._mat ); return ret; } [MethodImpl( MethodImplOptions.AggressiveInlining )] public static Matrix22 operator *( Matrix22 mat, float value ) { - return new Matrix22( - mat._mat.colum0 * value, mat._mat.colum1 * value ); + return new Matrix22( mat._mat.colum0 * value, mat._mat.colum1 * value ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] @@ -168,18 +165,14 @@ namespace StgSharp.Math [MethodImpl( MethodImplOptions.AggressiveInlining )] public static Matrix22 operator /( Matrix22 mat, float value ) { - return new Matrix22( - mat._mat.colum0 / value, mat._mat.colum1 / value ); + return new Matrix22( mat._mat.colum0 / value, mat._mat.colum1 / value ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] - public static unsafe Matrix22 operator +( - Matrix22 left, - Matrix22 right ) + public static unsafe Matrix22 operator +( Matrix22 left, Matrix22 right ) { Matrix22 ret = new Matrix22(); - InternalIO.Intrinsic.add_mat_2( &left._mat, &right._mat, - &ret._mat ); + InternalIO.Intrinsic.add_mat_2( &left._mat, &right._mat, &ret._mat ); return ret; } diff --git a/StgSharp.Common/Math/Linear/Matrix23.cs b/StgSharp.Common/Math/Linear/Matrix23.cs index a0c2a81e..00de4332 100644 --- a/StgSharp.Common/Math/Linear/Matrix23.cs +++ b/StgSharp.Common/Math/Linear/Matrix23.cs @@ -61,13 +61,7 @@ namespace StgSharp.Math Unsafe.SkipInit( out _transpose ); } - public Matrix23( - float a00, - float a01, - float a02, - float a10, - float a11, - float a12 ) + 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 ); @@ -85,7 +79,8 @@ namespace StgSharp.Math throw new ArgumentOutOfRangeException( nameof( columNum ) ); } InternalTranspose(); - fixed( float* p = &this._transpose.m00 ) { + fixed( float* p = &this._transpose.m00 ) + { ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); return *( float* )pbit; } @@ -99,7 +94,8 @@ namespace StgSharp.Math throw new ArgumentOutOfRangeException( nameof( columNum ) ); } InternalTranspose(); - fixed( float* p = &this._transpose.m00 ) { + fixed( float* p = &this._transpose.m00 ) + { ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); *( float* )pbit = value; } @@ -110,8 +106,10 @@ namespace StgSharp.Math [MethodImpl( MethodImplOptions.AggressiveInlining )] internal unsafe void InternalTranspose() { - if( !isTransposed ) { - fixed( ColumnSet3* source = &this._mat ) { + if( !isTransposed ) + { + fixed( ColumnSet3* source = &this._mat ) + { fixed( ColumnSet2* target = &this._transpose ) { InternalIO.Intrinsic.transpose32( source, target ); } @@ -122,13 +120,10 @@ namespace StgSharp.Math } [MethodImpl( MethodImplOptions.AggressiveInlining )] - public static unsafe Matrix23 operator -( - Matrix23 left, - Matrix23 right ) + public static unsafe Matrix23 operator -( Matrix23 left, Matrix23 right ) { Matrix23 ret = new Matrix23(); - InternalIO.Intrinsic.sub_mat_3( &left._mat, &right._mat, - &ret._mat ); + InternalIO.Intrinsic.sub_mat_3( &left._mat, &right._mat, &ret._mat ); return ret; } @@ -136,8 +131,7 @@ namespace StgSharp.Math public static Matrix23 operator *( Matrix23 mat, float value ) { return new Matrix23( - mat._mat.colum0 * value, mat._mat.colum1 * value, - mat._mat.colum2 * value ); + mat._mat.colum0 * value, mat._mat.colum1 * value, mat._mat.colum2 * value ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] @@ -186,18 +180,14 @@ namespace StgSharp.Math public static Matrix23 operator /( Matrix23 mat, float value ) { return new Matrix23( - mat._mat.colum0 / value, mat._mat.colum1 / value, - mat._mat.colum2 / value ); + mat._mat.colum0 / value, mat._mat.colum1 / value, mat._mat.colum2 / value ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] - public static unsafe Matrix23 operator +( - Matrix23 left, - Matrix23 right ) + public static unsafe Matrix23 operator +( Matrix23 left, Matrix23 right ) { Matrix23 ret = new Matrix23(); - InternalIO.Intrinsic.add_mat_3( &left._mat, &right._mat, - &ret._mat ); + 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 index 6e1f007c..4f689b3f 100644 --- a/StgSharp.Common/Math/Linear/Matrix24.cs +++ b/StgSharp.Common/Math/Linear/Matrix24.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="Matrix24.cs" -// Project: StgSharp +// Project: World // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // diff --git a/StgSharp.Common/Math/Linear/Matrix32.cs b/StgSharp.Common/Math/Linear/Matrix32.cs index 213fb909..b7a760be 100644 --- a/StgSharp.Common/Math/Linear/Matrix32.cs +++ b/StgSharp.Common/Math/Linear/Matrix32.cs @@ -66,13 +66,7 @@ namespace StgSharp.Math isTransposed = false; } - public unsafe Matrix32( - float a00, - float a01, - float a10, - float a11, - float a20, - float a21 ) + public unsafe Matrix32( float a00, float a01, float a10, float a11, float a20, float a21 ) { Unsafe.SkipInit( out this ); isTransposed = false; @@ -91,7 +85,8 @@ namespace StgSharp.Math throw new ArgumentOutOfRangeException( nameof( columNum ) ); } InternalTranspose(); - fixed( float* p = &this.transpose.m00 ) { + fixed( float* p = &this.transpose.m00 ) + { ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); return *( float* )pbit; } @@ -105,7 +100,8 @@ namespace StgSharp.Math throw new ArgumentOutOfRangeException( nameof( columNum ) ); } InternalTranspose(); - fixed( float* p = &this.transpose.m00 ) { + fixed( float* p = &this.transpose.m00 ) + { ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); *( float* )pbit = value; } @@ -121,8 +117,10 @@ namespace StgSharp.Math [MethodImpl( MethodImplOptions.AggressiveInlining )] internal unsafe void InternalTranspose() { - if( !isTransposed ) { - fixed( ColumnSet2* source = &this.mat ) { + if( !isTransposed ) + { + fixed( ColumnSet2* source = &this.mat ) + { fixed( ColumnSet3* target = &this.transpose ) { InternalIO.Intrinsic.transpose23( source, target ); } @@ -136,15 +134,13 @@ namespace StgSharp.Math public static Matrix32 operator -( Matrix32 left, Matrix32 right ) { return new Matrix32( - left.mat.colum0 - right.mat.colum0, - left.mat.colum1 - right.mat.colum1 ); + 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 ); + return new Matrix32( mat.mat.colum0 * value, mat.mat.colum1 * value ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] @@ -204,14 +200,11 @@ namespace StgSharp.Math [MethodImpl( MethodImplOptions.AggressiveInlining )] public static Matrix32 operator /( Matrix32 mat, float value ) { - return new Matrix32( - mat.mat.colum0 / value, mat.mat.colum1 / value ); + return new Matrix32( mat.mat.colum0 / value, mat.mat.colum1 / value ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] - public static unsafe Matrix32 operator +( - Matrix32 left, - Matrix32 right ) + public static unsafe Matrix32 operator +( Matrix32 left, Matrix32 right ) { Matrix32 ret = new Matrix32(); InternalIO.Intrinsic.add_mat_2( &left.mat, &right.mat, &ret.mat ); diff --git a/StgSharp.Common/Math/Linear/Matrix33.cs b/StgSharp.Common/Math/Linear/Matrix33.cs index bd77da3f..7aadcb49 100644 --- a/StgSharp.Common/Math/Linear/Matrix33.cs +++ b/StgSharp.Common/Math/Linear/Matrix33.cs @@ -68,15 +68,15 @@ namespace StgSharp.Math } public Matrix33( - float a00, - float a01, - float a02, - float a10, - float a11, - float a12, - float a20, - float a21, - float a22 ) + float a00, + float a01, + float a02, + float a10, + float a11, + float a12, + float a20, + float a21, + float a22 ) { Unsafe.SkipInit( out this ); isTransposed = false; @@ -96,7 +96,8 @@ namespace StgSharp.Math throw new ArgumentOutOfRangeException( nameof( columNum ) ); } InternalTranspose(); - fixed( float* p = &this.transpose.m00 ) { + fixed( float* p = &this.transpose.m00 ) + { ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); return *( float* )pbit; } @@ -112,7 +113,8 @@ namespace StgSharp.Math LogType.Error ); } InternalTranspose(); - fixed( float* p = &this.transpose.m00 ) { + fixed( float* p = &this.transpose.m00 ) + { ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); *( float* )pbit = value; } @@ -131,7 +133,8 @@ namespace StgSharp.Math [MethodImpl( MethodImplOptions.AggressiveInlining )] internal unsafe void InternalTranspose() { - if( !isTransposed ) { + if( !isTransposed ) + { fixed( ColumnSet3* source = &this.mat, target = &this.transpose ) { InternalIO.Intrinsic.transpose33( source, target ); } @@ -140,9 +143,7 @@ namespace StgSharp.Math } [MethodImpl( MethodImplOptions.AggressiveInlining )] - public static unsafe Matrix33 operator -( - Matrix33 left, - Matrix33 right ) + public static unsafe Matrix33 operator -( Matrix33 left, Matrix33 right ) { Matrix33 ret = new Matrix33(); InternalIO.Intrinsic.sub_mat_3( &left.mat, &right.mat, &ret.mat ); @@ -153,8 +154,7 @@ namespace StgSharp.Math public static Matrix33 operator *( Matrix33 mat, float value ) { return new Matrix33( - mat.mat.colum0 * value, mat.mat.colum1 * value, - mat.mat.colum2 * value ); + mat.mat.colum0 * value, mat.mat.colum1 * value, mat.mat.colum2 * value ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] @@ -225,14 +225,11 @@ namespace StgSharp.Math public static Matrix33 operator /( Matrix33 mat, float value ) { return new Matrix33( - mat.mat.colum0 / value, mat.mat.colum1 / value, - mat.mat.colum2 / value ); + mat.mat.colum0 / value, mat.mat.colum1 / value, mat.mat.colum2 / value ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] - public static unsafe Matrix33 operator +( - Matrix33 left, - Matrix33 right ) + public static unsafe Matrix33 operator +( Matrix33 left, Matrix33 right ) { Matrix33 ret = new Matrix33(); InternalIO.Intrinsic.add_mat_3( &left.mat, &right.mat, &ret.mat ); diff --git a/StgSharp.Common/Math/Linear/Matrix34.cs b/StgSharp.Common/Math/Linear/Matrix34.cs index 765c022c..66ac6ffc 100644 --- a/StgSharp.Common/Math/Linear/Matrix34.cs +++ b/StgSharp.Common/Math/Linear/Matrix34.cs @@ -79,18 +79,18 @@ namespace StgSharp.Math } 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 ) + 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; @@ -111,7 +111,8 @@ namespace StgSharp.Math throw new ArgumentOutOfRangeException( nameof( columNum ) ); } InternalTranspose(); - fixed( float* p = &this.transpose.m00 ) { + fixed( float* p = &this.transpose.m00 ) + { ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); return *( float* )pbit; } @@ -125,7 +126,8 @@ namespace StgSharp.Math throw new ArgumentOutOfRangeException( nameof( columNum ) ); } InternalTranspose(); - fixed( float* p = &this.transpose.m00 ) { + fixed( float* p = &this.transpose.m00 ) + { ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); *( float* )pbit = value; } @@ -135,8 +137,10 @@ namespace StgSharp.Math internal unsafe void InternalTranspose() { - if( !isTransposed ) { - fixed( ColumnSet4* source = &this.mat ) { + if( !isTransposed ) + { + fixed( ColumnSet4* source = &this.mat ) + { fixed( ColumnSet3* target = &this.transpose ) { InternalIO.Intrinsic.transpose43( source, target ); } @@ -147,9 +151,7 @@ namespace StgSharp.Math } [MethodImpl( MethodImplOptions.AggressiveInlining )] - public static unsafe Matrix34 operator -( - Matrix34 left, - Matrix34 right ) + public static unsafe Matrix34 operator -( Matrix34 left, Matrix34 right ) { Matrix34 ret = new Matrix34(); InternalIO.Intrinsic.sub_mat_4( &left.mat, &right.mat, &ret.mat ); @@ -160,8 +162,8 @@ namespace StgSharp.Math 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 ); + mat.mat.colum0 * value, mat.mat.colum1 * value, mat.mat.colum2 * value, + mat.mat.colum3 * value ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] @@ -222,14 +224,12 @@ namespace StgSharp.Math 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 ); + 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 ) + public static unsafe Matrix34 operator +( Matrix34 left, Matrix34 right ) { Matrix34 ret = new Matrix34(); InternalIO.Intrinsic.add_mat_4( &left.mat, &right.mat, &ret.mat ); diff --git a/StgSharp.Common/Math/Linear/Matrix42.cs b/StgSharp.Common/Math/Linear/Matrix42.cs index f971c83e..dd7324e1 100644 --- a/StgSharp.Common/Math/Linear/Matrix42.cs +++ b/StgSharp.Common/Math/Linear/Matrix42.cs @@ -71,14 +71,14 @@ namespace StgSharp.Math } public Matrix42( - float a00, - float a01, - float a10, - float a11, - float a20, - float a21, - float a30, - float a31 ) + float a00, + float a01, + float a10, + float a11, + float a20, + float a21, + float a30, + float a31 ) { Unsafe.SkipInit( out this ); isTransposed = false; @@ -97,7 +97,8 @@ namespace StgSharp.Math throw new ArgumentOutOfRangeException( nameof( columNum ) ); } InternalTranspose(); - fixed( float* p = &this.transpose.m00 ) { + fixed( float* p = &this.transpose.m00 ) + { ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); return *( float* )pbit; } @@ -111,7 +112,8 @@ namespace StgSharp.Math throw new ArgumentOutOfRangeException( nameof( columNum ) ); } InternalTranspose(); - fixed( float* p = &this.transpose.m00 ) { + fixed( float* p = &this.transpose.m00 ) + { ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); *( float* )pbit = value; } @@ -121,15 +123,16 @@ namespace StgSharp.Math public override int GetHashCode() { - return HashCode.Combine( - mat.colum0.GetHashCode(), mat.colum1.GetHashCode() ); + return HashCode.Combine( mat.colum0.GetHashCode(), mat.colum1.GetHashCode() ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] internal unsafe void InternalTranspose() { - if( !isTransposed ) { - fixed( ColumnSet2* source = &this.mat ) { + if( !isTransposed ) + { + fixed( ColumnSet2* source = &this.mat ) + { fixed( ColumnSet4* target = &this.transpose ) { InternalIO.Intrinsic.transpose24( source, target ); } @@ -140,9 +143,7 @@ namespace StgSharp.Math } [MethodImpl( MethodImplOptions.AggressiveInlining )] - public static unsafe Matrix42 operator -( - Matrix42 left, - Matrix42 right ) + public static unsafe Matrix42 operator -( Matrix42 left, Matrix42 right ) { Matrix42 ret = new Matrix42(); InternalIO.Intrinsic.sub_mat_2( &left.mat, &right.mat, &ret.mat ); @@ -152,8 +153,7 @@ namespace StgSharp.Math [MethodImpl( MethodImplOptions.AggressiveInlining )] public static Matrix42 operator *( Matrix42 mat, float value ) { - return new Matrix42( - mat.mat.colum0 * value, mat.mat.colum1 * value ); + return new Matrix42( mat.mat.colum0 * value, mat.mat.colum1 * value ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] @@ -225,14 +225,11 @@ namespace StgSharp.Math [MethodImpl( MethodImplOptions.AggressiveInlining )] public static Matrix42 operator /( Matrix42 mat, float value ) { - return new Matrix42( - mat.mat.colum0 / value, mat.mat.colum1 / value ); + return new Matrix42( mat.mat.colum0 / value, mat.mat.colum1 / value ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] - public static unsafe Matrix42 operator +( - Matrix42 left, - Matrix42 right ) + public static unsafe Matrix42 operator +( Matrix42 left, Matrix42 right ) { Matrix42 ret = new Matrix42(); InternalIO.Intrinsic.add_mat_2( &left.mat, &right.mat, &ret.mat ); diff --git a/StgSharp.Common/Math/Linear/Matrix43.cs b/StgSharp.Common/Math/Linear/Matrix43.cs index af978c6d..68c8710e 100644 --- a/StgSharp.Common/Math/Linear/Matrix43.cs +++ b/StgSharp.Common/Math/Linear/Matrix43.cs @@ -70,18 +70,18 @@ namespace StgSharp.Math } 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 ) + 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; @@ -101,7 +101,8 @@ namespace StgSharp.Math throw new ArgumentOutOfRangeException( nameof( columNum ) ); } InternalTranspose(); - fixed( float* p = &this.transpose.m00 ) { + fixed( float* p = &this.transpose.m00 ) + { ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); return *( float* )pbit; } @@ -115,7 +116,8 @@ namespace StgSharp.Math throw new ArgumentOutOfRangeException( nameof( columNum ) ); } InternalTranspose(); - fixed( float* p = &this.transpose.m00 ) { + fixed( float* p = &this.transpose.m00 ) + { ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); *( float* )pbit = value; } @@ -130,22 +132,22 @@ namespace StgSharp.Math public bool Equals( Matrix43 other ) { - return EqualityComparer.Default.Equals( mat, - other.mat ); + return EqualityComparer.Default.Equals( mat, other.mat ); } public override int GetHashCode() { return HashCode.Combine( - mat.colum0.GetHashCode(), mat.colum1.GetHashCode(), - mat.colum2.GetHashCode() ); + mat.colum0.GetHashCode(), mat.colum1.GetHashCode(), mat.colum2.GetHashCode() ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] internal unsafe void InternalTranspose() { - if( !isTransposed ) { - fixed( ColumnSet3* source = &this.mat ) { + if( !isTransposed ) + { + fixed( ColumnSet3* source = &this.mat ) + { fixed( ColumnSet4* target = &this.transpose ) { InternalIO.Intrinsic.transpose34( source, target ); } @@ -159,8 +161,7 @@ namespace StgSharp.Math 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.colum0 - right.mat.colum0, left.mat.colum1 - right.mat.colum1, left.mat.colum2 - right.mat.colum2 ); } @@ -173,8 +174,7 @@ namespace StgSharp.Math public static unsafe Matrix43 operator *( Matrix43 mat, float value ) { return new Matrix43( - mat.mat.colum0 * value, mat.mat.colum1 * value, - mat.mat.colum2 * value ); + mat.mat.colum0 * value, mat.mat.colum1 * value, mat.mat.colum2 * value ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] @@ -247,14 +247,11 @@ namespace StgSharp.Math public static Matrix43 operator /( Matrix43 mat, float value ) { return new Matrix43( - mat.mat.colum0 / value, mat.mat.colum1 / value, - mat.mat.colum2 / value ); + mat.mat.colum0 / value, mat.mat.colum1 / value, mat.mat.colum2 / value ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] - public static unsafe Matrix43 operator +( - Matrix43 left, - Matrix43 right ) + public static unsafe Matrix43 operator +( Matrix43 left, Matrix43 right ) { Matrix43 ret = new Matrix43(); InternalIO.Intrinsic.add_mat_3( &left.mat, &right.mat, &ret.mat ); diff --git a/StgSharp.Common/Math/Linear/Matrix44.cs b/StgSharp.Common/Math/Linear/Matrix44.cs index 84756810..b3f2388c 100644 --- a/StgSharp.Common/Math/Linear/Matrix44.cs +++ b/StgSharp.Common/Math/Linear/Matrix44.cs @@ -62,11 +62,7 @@ namespace StgSharp.Math this.mat = mat; } - internal Matrix44( - Vector4 vec0, - Vector4 vec1, - Vector4 vec2, - Vector4 vec3 ) + internal Matrix44( Vector4 vec0, Vector4 vec1, Vector4 vec2, Vector4 vec3 ) { Unsafe.SkipInit( out this ); isTransposed = false; @@ -83,22 +79,22 @@ namespace StgSharp.Math } 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 ) + 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; @@ -113,7 +109,8 @@ namespace StgSharp.Math get { #if DEBUG - if( ( rowNum > 3 ) || ( rowNum < 0 ) ) { + if( ( rowNum > 3 ) || ( rowNum < 0 ) ) + { throw new ArgumentOutOfRangeException( nameof( columNum ) ); } if( ( columNum > 3 ) || ( columNum < 0 ) ) { @@ -121,7 +118,8 @@ namespace StgSharp.Math } #endif InternalTranspose(); - fixed( float* p = &this.transpose.m00 ) { + fixed( float* p = &this.transpose.m00 ) + { ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); return *( float* )pbit; } @@ -129,7 +127,8 @@ namespace StgSharp.Math set { #if DEBUG - if( ( rowNum > 3 ) || ( rowNum < 0 ) ) { + if( ( rowNum > 3 ) || ( rowNum < 0 ) ) + { throw new ArgumentOutOfRangeException( nameof( columNum ) ); } if( ( columNum > 3 ) || ( columNum < 0 ) ) { @@ -137,7 +136,8 @@ namespace StgSharp.Math } #endif InternalTranspose(); - fixed( float* p = &this.transpose.m00 ) { + fixed( float* p = &this.transpose.m00 ) + { ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); *( float* )pbit = value; } @@ -191,8 +191,8 @@ namespace StgSharp.Math public override int GetHashCode() { return HashCode.Combine( - mat.colum0.GetHashCode(), mat.colum1.GetHashCode(), - mat.colum2.GetHashCode(), mat.colum3.GetHashCode() ); + mat.colum0.GetHashCode(), mat.colum1.GetHashCode(), mat.colum2.GetHashCode(), + mat.colum3.GetHashCode() ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] @@ -200,7 +200,8 @@ namespace StgSharp.Math { InternalTranspose(); Matrix42 ans = new Matrix42(); - fixed( ColumnSet4* lptr = &transpose ) { + fixed( ColumnSet4* lptr = &transpose ) + { fixed( Vector4* rptr = &right.mat.colum0 ) { InternalIO.Intrinsic.dot_42( lptr, rptr, &ans.mat.colum0 ); } @@ -215,7 +216,8 @@ namespace StgSharp.Math Matrix43 ans = new Matrix43(); - fixed( Vector4* rptr = &right.mat.colum0 ) { + fixed( Vector4* rptr = &right.mat.colum0 ) + { fixed( ColumnSet4* lptr = &transpose ) { InternalIO.Intrinsic.dot_43( lptr, rptr, &ans.mat.colum0 ); } @@ -233,7 +235,8 @@ namespace StgSharp.Math [MethodImpl( MethodImplOptions.AggressiveInlining )] internal unsafe void InternalTranspose() { - if( !isTransposed ) { + if( !isTransposed ) + { fixed( ColumnSet4* source = &mat, target = &transpose ) { InternalIO.Intrinsic.transpose44( source, target ); } @@ -242,15 +245,11 @@ namespace StgSharp.Math } [MethodImpl( MethodImplOptions.AggressiveInlining )] - public static unsafe Matrix44 operator -( - Matrix44 left, - Matrix44 right ) + 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 ); + 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 ) @@ -262,17 +261,15 @@ namespace StgSharp.Math 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 ); + mat.mat.colum0 * value, mat.mat.colum1 * value, mat.mat.colum2 * value, + mat.mat.colum3 * value ); } [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 ) + public static unsafe Matrix42 operator *( Matrix44 left, Matrix42 right ) { return left.Multiple( right ); } @@ -313,9 +310,7 @@ namespace StgSharp.Math } [MethodImpl( MethodImplOptions.AggressiveInlining )] - public static unsafe Matrix44 operator +( - Matrix44 left, - Matrix44 right ) + public static unsafe Matrix44 operator +( Matrix44 left, Matrix44 right ) { Matrix44 ret = new Matrix44(); InternalIO.Intrinsic.add_mat_4( &left.mat, &right.mat, &ret.mat ); diff --git a/StgSharp.Common/Math/Linear/Vec2.cs b/StgSharp.Common/Math/Linear/Vec2.cs index 1d8da84d..7920543c 100644 --- a/StgSharp.Common/Math/Linear/Vec2.cs +++ b/StgSharp.Common/Math/Linear/Vec2.cs @@ -38,8 +38,8 @@ using System.Runtime.InteropServices; namespace StgSharp.Math { /// - /// A two dimension vector defined by two elements. Vec2 in StgSharp are default used as colum - /// vector. + /// A two dimension vector defined by two elements. Vec2 in World are default used as colum + /// vector. /// [StructLayout( LayoutKind.Explicit, Size = 16, Pack = 16 )] public struct Vec2 : IVector diff --git a/StgSharp.Common/Math/Linear/Vec3.cs b/StgSharp.Common/Math/Linear/Vec3.cs index e24de603..71a6edf6 100644 --- a/StgSharp.Common/Math/Linear/Vec3.cs +++ b/StgSharp.Common/Math/Linear/Vec3.cs @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using StgSharp.HighPerformance; using System; using System.Numerics; @@ -133,9 +132,11 @@ namespace StgSharp.Math public override bool Equals( object obj ) { - if( obj is Vec3 ) { + if( obj is Vec3 ) + { return this == ( Vec3 )obj; - } else { + } else + { return false; } } @@ -220,8 +221,7 @@ namespace StgSharp.Math } [MethodImpl( MethodImplOptions.AggressiveInlining )] - public static unsafe implicit operator Vec3( - (float, float, float) tuple ) + public static unsafe implicit operator Vec3( (float, float, float) tuple ) { Vec3 vec = new Vec3( *( Vector3* )&tuple ); return vec; diff --git a/StgSharp.Common/Math/Linear/Vector.Cross.cs b/StgSharp.Common/Math/Linear/Vector.Cross.cs index 1f1866e0..29b24e86 100644 --- a/StgSharp.Common/Math/Linear/Vector.Cross.cs +++ b/StgSharp.Common/Math/Linear/Vector.Cross.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="Vector.Cross.cs" -// Project: StgSharp +// Project: World // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // diff --git a/StgSharp.Common/Math/Linear/Vector.GetAngle.cs b/StgSharp.Common/Math/Linear/Vector.GetAngle.cs index 81144fe6..d77df9b2 100644 --- a/StgSharp.Common/Math/Linear/Vector.GetAngle.cs +++ b/StgSharp.Common/Math/Linear/Vector.GetAngle.cs @@ -43,8 +43,7 @@ namespace StgSharp.Math public static float GetAngle( Vec3 vec1, Vec3 vec2 ) { - return Scaler.ACos( - ( vec1 * vec2 ) / ( vec1.GetLength() * vec2.GetLength() ) ); + return Scaler.ACos( ( vec1 * vec2 ) / ( vec1.GetLength() * vec2.GetLength() ) ); } } diff --git a/StgSharp.Common/Math/Linear/Vector.Normalize.cs b/StgSharp.Common/Math/Linear/Vector.Normalize.cs index 060e6d97..fac4d7f6 100644 --- a/StgSharp.Common/Math/Linear/Vector.Normalize.cs +++ b/StgSharp.Common/Math/Linear/Vector.Normalize.cs @@ -46,12 +46,18 @@ namespace StgSharp.Math public static Vec4 Normalize( Vec4 vec ) { - return new Vec4 { vec = Vector4.Normalize( vec.vec ) }; + return new Vec4 + { + vec = Vector4.Normalize( vec.vec ) + }; } public static Vec3 Normalize( Vec3 vec ) { - return new Vec3 { v = Vector3.Normalize( vec.v ) }; + return new Vec3 + { + v = Vector3.Normalize( vec.v ) + }; } public static unsafe void Normalize( ref Vec4 source, ref Vec4 target ) @@ -76,8 +82,7 @@ namespace StgSharp.Math Vector3 t = target.v; s = Vector3.Normalize( s ); - Vector3 projection = ( Vector3.Dot( t, s ) / Vector3.Dot( s, - s ) ) * s; + Vector3 projection = ( Vector3.Dot( t, s ) / Vector3.Dot( s, s ) ) * s; t -= projection; t = Vector3.Normalize( t ); diff --git a/StgSharp.Common/Math/Linear/Vector.Orthogonalize.cs b/StgSharp.Common/Math/Linear/Vector.Orthogonalize.cs index 8f333e65..318d14e0 100644 --- a/StgSharp.Common/Math/Linear/Vector.Orthogonalize.cs +++ b/StgSharp.Common/Math/Linear/Vector.Orthogonalize.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="Vector.Orthogonalize.cs" -// Project: StgSharp +// Project: World // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -46,17 +46,21 @@ namespace StgSharp.Math public static Vec4 Orthogonalize( Vec4 vec ) { - return new Vec4 { vec = Vector4.Normalize( vec.vec ) }; + return new Vec4 + { + vec = Vector4.Normalize( vec.vec ) + }; } public static Vec3 Orthogonalize( Vec3 vec ) { - return new Vec3 { v = Vector3.Normalize( vec.v ) }; + return new Vec3 + { + v = Vector3.Normalize( vec.v ) + }; } - public static unsafe void Orthogonalize( - ref Vec4 source, - ref Vec4 target ) + public static unsafe void Orthogonalize( ref Vec4 source, ref Vec4 target ) { Vector4 s = source.vec; Vector4 t = target.vec; @@ -73,21 +77,22 @@ namespace StgSharp.Math } /// - /// Orthogonalize two s, let their length be 1 and perpendicular to each - /// other. + /// Orthogonalize two s, let their length be 1 and perpendicular to + /// each other. /// - /// - /// - public static unsafe void Orthogonalize( - ref Vec3 source, - ref Vec3 target ) + /// + /// + /// + /// + /// + /// + 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; + Vector3 projection = ( Vector3.Dot( t, s ) / Vector3.Dot( s, s ) ) * s; t -= projection; t = Vector3.Normalize( t ); diff --git a/StgSharp.Common/Math/Scalar/ASin.cs b/StgSharp.Common/Math/Scalar/ASin.cs index bb32dd13..749f1362 100644 --- a/StgSharp.Common/Math/Scalar/ASin.cs +++ b/StgSharp.Common/Math/Scalar/ASin.cs @@ -41,11 +41,17 @@ namespace StgSharp.Math piby2 = 1.5707963705e+00f; /* 0x3fc90fdb */ /// - /// Reurns the value of ArcSin(x) + /// Reurns the value of ArcSin(x) /// - /// The sine value of the angle - /// - /// + /// + /// The sine value of the angle + /// + /// + /// + /// + /// + /// + /// public static float ASin( float x ) { return MathF.Asin( x ); diff --git a/StgSharp.Common/Math/Scalar/BasicOps.cs b/StgSharp.Common/Math/Scalar/BasicOps.cs index e211a3d3..3690476a 100644 --- a/StgSharp.Common/Math/Scalar/BasicOps.cs +++ b/StgSharp.Common/Math/Scalar/BasicOps.cs @@ -53,8 +53,7 @@ namespace StgSharp.Math return *( int* )a; } - internal static string GetListSeparator( - IFormatProvider formatProvider ) + internal static string GetListSeparator( IFormatProvider formatProvider ) { if( formatProvider is CultureInfo cultureInfo ) { return cultureInfo.TextInfo.ListSeparator; diff --git a/StgSharp.Common/Math/Scalar/Compare.cs b/StgSharp.Common/Math/Scalar/Compare.cs index 8f7b2e21..c5d9789b 100644 --- a/StgSharp.Common/Math/Scalar/Compare.cs +++ b/StgSharp.Common/Math/Scalar/Compare.cs @@ -42,7 +42,8 @@ namespace StgSharp.Math public static float MaxOf( params float[] stream ) { float ret = stream[ 0 ]; - foreach( float num in stream ) { + foreach( float num in stream ) + { if( ret < num ) { ret = num; } @@ -53,7 +54,8 @@ namespace StgSharp.Math public static float MinOf( params float[] stream ) { float ret = stream[ 0 ]; - foreach( float num in stream ) { + foreach( float num in stream ) + { if( ret > num ) { ret = num; } diff --git a/StgSharp.Common/Math/Scalar/Ctor.cs b/StgSharp.Common/Math/Scalar/Ctor.cs index b976dcdd..1dada7d9 100644 --- a/StgSharp.Common/Math/Scalar/Ctor.cs +++ b/StgSharp.Common/Math/Scalar/Ctor.cs @@ -47,16 +47,13 @@ namespace StgSharp.Math [DllImport( "Kernel32.dll", EntryPoint = "VirtualAlloc" )] private static extern IntPtr VirtualAlloc( - IntPtr address, - int size, - uint allocType, - uint protect ); + IntPtr address, + int size, + uint allocType, + uint protect ); [DllImport( "Kernel32.dll", EntryPoint = "VirtualFree" )] - private static extern bool VirtualFree( - IntPtr address, - int size, - uint freeType ); + 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 index 4df46ac0..ed4794be 100644 --- a/StgSharp.Common/Math/Scalar/Exp.cs +++ b/StgSharp.Common/Math/Scalar/Exp.cs @@ -36,10 +36,14 @@ namespace StgSharp.Math public const float E = 2.718281828f; /// - /// Get the value of E ^ x; + /// Get the value of E ^ x; /// - /// - /// + /// + /// + /// + /// + /// + /// public static unsafe float Exp( float x ) { if( x == 1 ) { @@ -50,15 +54,18 @@ namespace StgSharp.Math } bool sign = false; - if( x < 0 ) { + if( x < 0 ) + { sign = true; x = -x; } float z = x, t; - if( x < 0.5f ) { + if( x < 0.5f ) + { t = 1.0f + ( x * ( 1.0f + ( x * ( 0.5f + ( x * ( 0.1666666667f + ( x * ( 0.0416666666667f + ( x * 8.333333333e-3f ) ) ) ) ) ) ) ) ); - } else { + } else + { /* * define z = n * 2 ^ m * n is between 0 and 0.5 diff --git a/StgSharp.Common/Math/Scalar/Log.cs b/StgSharp.Common/Math/Scalar/Log.cs index 9003770d..f64af7d0 100644 --- a/StgSharp.Common/Math/Scalar/Log.cs +++ b/StgSharp.Common/Math/Scalar/Log.cs @@ -42,9 +42,11 @@ namespace StgSharp.Math /// /// /// - /// + /// + /// + /// /// - /// Returns the value of ln(x). + /// Returns the value of ln(x). /// public static unsafe float Log( float x ) { diff --git a/StgSharp.Common/Math/Scalar/Pow.cs b/StgSharp.Common/Math/Scalar/Pow.cs index 87091efa..7e2775ff 100644 --- a/StgSharp.Common/Math/Scalar/Pow.cs +++ b/StgSharp.Common/Math/Scalar/Pow.cs @@ -34,11 +34,17 @@ namespace StgSharp.Math { /// - /// calculate the value of x^y + /// calculate the value of x^y /// - /// - /// - /// Returns the value of x^y + /// + /// + /// + /// + /// + /// + /// + /// Returns the value of x^y + /// public static unsafe float Pow( float x, float y ) { /* @@ -67,14 +73,17 @@ namespace StgSharp.Math z = Scaler.Log( x ) * y; bool sign = false; - if( z < 0 ) { + if( z < 0 ) + { sign = true; z = -z; } - if( z < 0.5f ) { + if( z < 0.5f ) + { t = 1.0f + ( z * ( 1.0f + ( z * ( 0.5f + ( z * ( 0.1666666667f + ( z * ( 0.0416666666667f + ( z * 8.333333333e-3f ) ) ) ) ) ) ) ) ); - } else { + } else + { uint zBit = *( uint* )&z; uint zBitAbs = zBit & 0b_0111_1111_1111_1111_1111_1111_1111_1111; uint uintm = zBitAbs >> 23; diff --git a/StgSharp.Common/Math/Scalar/Random.cs b/StgSharp.Common/Math/Scalar/Random.cs index 562f7964..f65ec272 100644 --- a/StgSharp.Common/Math/Scalar/Random.cs +++ b/StgSharp.Common/Math/Scalar/Random.cs @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using StgSharp.Math; using System; @@ -56,9 +55,11 @@ namespace StgSharp.Math #endif /// - /// returns a random float number between 0 and 1. + /// returns a random float number between 0 and 1. /// - /// + /// + /// + /// public static unsafe float LowProceisionRandom() { float seed = currentSeed; @@ -75,7 +76,8 @@ namespace StgSharp.Math sample2 *= 1000000; float result = sample2 - ( ( int )sample2 ); - if( result == 0 ) { + if( result == 0 ) + { currentSeed = sample2 + 0.1f; result = Scaler.LowProceisionRandom(); } @@ -85,19 +87,21 @@ namespace StgSharp.Math /// /// /// - /// + /// + /// + /// [MethodImpl( MethodImplOptions.AggressiveInlining )] public static T Random() where T: struct, IConvertible, INumber { - if( randomSeed == null ) { + if( randomSeed == null ) + { randomSeed = new byte[64]; string originSeed = - ( $"{((Assembly.GetEntryAssembly() == null) ? (Assembly.GetAssembly(typeof(StgSharp))!) : + ( $"{((Assembly.GetEntryAssembly() == null) ? (Assembly.GetAssembly(typeof(World))!) : Assembly.GetEntryAssembly())}" ) + ( $"{DateTime.UtcNow.ToString("o")}" ); using( SHA256 sha = SHA256.Create() ) { - randomSeed = sha.ComputeHash( - Encoding.UTF8.GetBytes( originSeed ) ); + randomSeed = sha.ComputeHash( Encoding.UTF8.GetBytes( originSeed ) ); } } using( SHA256 sha = SHA256.Create() ) { @@ -109,9 +113,11 @@ namespace StgSharp.Math } /// - /// Generates a random seed in int value. + /// Generates a random seed in int value. /// - /// + /// + /// + /// public static unsafe int RandomSeed() { float seedValue1 = LowProceisionRandom(); diff --git a/StgSharp.Common/Math/Scalar/Sqrt.cs b/StgSharp.Common/Math/Scalar/Sqrt.cs index 056a6a51..c37e2261 100644 --- a/StgSharp.Common/Math/Scalar/Sqrt.cs +++ b/StgSharp.Common/Math/Scalar/Sqrt.cs @@ -47,9 +47,9 @@ namespace StgSharp.Math * 在进一步简化操作后,计算精度达到0.5%,速度约为.Net库函数的3倍 */ - if( x < 0 ) { - throw new ArgumentOutOfRangeException( - "Input is smaller than zero!" ); + if( x < 0 ) + { + throw new ArgumentOutOfRangeException( "Input is smaller than zero!" ); } if( x == 0 ) { return 0; @@ -60,7 +60,8 @@ namespace StgSharp.Math * 故不考虑正负号 */ - if( x < 0 ) { + if( x < 0 ) + { throw new ArgumentOutOfRangeException(); } if( x <= 1e-12 ) { diff --git a/StgSharp.Common/Math/Scalar/Tan.cs b/StgSharp.Common/Math/Scalar/Tan.cs index 580fd019..fec4dbda 100644 --- a/StgSharp.Common/Math/Scalar/Tan.cs +++ b/StgSharp.Common/Math/Scalar/Tan.cs @@ -47,8 +47,8 @@ namespace StgSharp.Math 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 ) ); + return ( ( sinData[ a ] * cos ) + ( cosData[ a ] * sin ) ) / ( ( cosData[ a ] * cos ) - ( sinData[ + a ] * sin ) ); } } diff --git a/StgSharp.Common/PipeLine/CrossFramePipelineNode.cs b/StgSharp.Common/PipeLine/CrossFramePipelineNode.cs index d8946c6c..dd8c8ef9 100644 --- a/StgSharp.Common/PipeLine/CrossFramePipelineNode.cs +++ b/StgSharp.Common/PipeLine/CrossFramePipelineNode.cs @@ -63,9 +63,9 @@ namespace StgSharp.PipeLine private protected set => _mainExecution = value; } - public IEnumerable InputInterfacesName => _inputName; + public IEnumerable InputPortName => _inputName; - public IEnumerable OutputInterfacesName => _outputName; + public IEnumerable OutputPortName => _outputName; public PipelineNodeOperation Operation { @@ -73,8 +73,8 @@ namespace StgSharp.PipeLine } public void NodeMain( - in Dictionary input, - in Dictionary output ) + in Dictionary input, + in Dictionary output ) { if( currentCount < cycleCount ) { @@ -86,7 +86,7 @@ namespace StgSharp.PipeLine } //Console.WriteLine(currentCount); - PipelineNodeExport.SkipAll( output ); + PipelineNodeOutPort.SkipAll( output ); } } diff --git a/StgSharp.Common/PipeLine/IConvertableToPipelineNode.cs b/StgSharp.Common/PipeLine/IConvertableToPipelineNode.cs index 59141828..cf8447ac 100644 --- a/StgSharp.Common/PipeLine/IConvertableToPipelineNode.cs +++ b/StgSharp.Common/PipeLine/IConvertableToPipelineNode.cs @@ -36,21 +36,21 @@ using System.Text; namespace StgSharp.PipeLine { public delegate void PipelineNodeOperation( - in Dictionary input, - in Dictionary output ); + in Dictionary input, + in Dictionary output ); public interface IConvertableToPipelineNode { - public IEnumerable InputInterfacesName { get; } + public IEnumerable InputPortName { get; } - public IEnumerable OutputInterfacesName { get; } + public IEnumerable OutputPortName { get; } PipelineNodeOperation Operation { get; } void NodeMain( - in Dictionary input, - in Dictionary output ); + in Dictionary input, + in Dictionary output ); } @@ -71,15 +71,15 @@ namespace StgSharp.PipeLine _execution = execution; } - public IEnumerable InputInterfacesName => _input; + public IEnumerable InputPortName => _input; - public IEnumerable OutputInterfacesName => _output; + public IEnumerable OutputPortName => _output; public PipelineNodeOperation Operation => _execution; public void NodeMain( - in Dictionary input, - in Dictionary output ) + in Dictionary input, + in Dictionary output ) { _execution.Invoke( input, output ); } diff --git a/StgSharp.Common/PipeLine/PipeLineRunner.cs b/StgSharp.Common/PipeLine/PipeLineRunner.cs index b4ee8c87..f75ae0fa 100644 --- a/StgSharp.Common/PipeLine/PipeLineRunner.cs +++ b/StgSharp.Common/PipeLine/PipeLineRunner.cs @@ -51,69 +51,26 @@ namespace StgSharp.PipeLine private static ConcurrentStack pipelineInWaiting = new ConcurrentStack(); private static int _callingThread; - private static SemaphoreSlim bpLock = new SemaphoreSlim( 0, 1 ); + private static SemaphoreSlim pipelineLock = new SemaphoreSlim( 0, 1 ); - /// - /// Only the following occasions of calling are valid: 1. no bp is - /// running or the only bp is quitting. 2. calling from the main thread or a - /// thread the current bp is running on. - /// - internal static bool IsValidCalling - { - get - { - if( ( NodeRunner.CurrentBlueprint == null ) || //no bp running at all - ( ( pipelineInWaiting.IsEmpty ) && ( NodeRunner.CurrentBlueprint.IsRunning == - false ) ) ) - { - // a bp is quitting - //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( PipelineScheduler blueprint ) + public static void Run( PipelineScheduler pipeline ) { //Console.WriteLine(); - if( blueprint == null ) + if( pipeline == null ) { return; } - if( blueprint.IsRunning ) { + if( pipeline.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(); + if( !IsValidCalling() ) { + pipelineLock.Wait(); } + if( InterruptAndRunNewPipeline( pipeline ) ) + { + while( InterruptAndRunNewPipeline( NodeRunner.CurrentPipeline! ) ) { } + } + pipelineLock.Release(); Interlocked.Exchange( ref _callingThread, -1 ); } @@ -137,7 +94,10 @@ namespace StgSharp.PipeLine public static void Terminate() { cts.Cancel(); - NodeRunner.CurrentBlueprint.Terminate(); + if( NodeRunner.CurrentPipeline is null ) { + return; + } + NodeRunner.CurrentPipeline.Terminate(); foreach( NodeRunner task in allAvailableTask ) { task.Cts.Cancel(); } @@ -147,26 +107,28 @@ namespace StgSharp.PipeLine pipelineInWaiting.Clear(); } - internal static bool InterruptAndRunNewBp( PipelineScheduler newBp ) + internal static bool InterruptAndRunNewPipeline( PipelineScheduler newPipeline ) { - ArgumentNullException.ThrowIfNull( newBp ); - if( ( newBp != NodeRunner.CurrentBlueprint ) && ( NodeRunner.CurrentBlueprint != null ) ) + ArgumentNullException.ThrowIfNull( newPipeline ); + if( ( newPipeline != NodeRunner.CurrentPipeline ) && + ( NodeRunner.CurrentPipeline != null ) ) { //if a running bp exists - pipelineInWaiting.Push( NodeRunner.CurrentBlueprint ); + pipelineInWaiting.Push( NodeRunner.CurrentPipeline ); } //load new bp to current bp - Interlocked.Exchange( ref NodeRunner.CurrentBlueprint!, newBp ); + NodeRunner.CurrentPipeline = newPipeline; Interlocked.Exchange( ref _callingThread, Environment.CurrentManagedThreadId ); //run beginning node to init it first. - if( !NodeRunner.CurrentBlueprint.IsRunning ) + if( !NodeRunner.CurrentPipeline.IsRunning ) { - ( NodeRunner.CurrentBlueprint.BeginLayer as BeginningNode )!.Run(); + ( NodeRunner.CurrentPipeline.BeginLayer as BeginningNode )!.Run(); } //refresh all tasks + /* for( int i = 0; i < allAvailableTask.Length; i++ ) { NodeRunner item = allAvailableTask[ i ]; @@ -174,19 +136,64 @@ namespace StgSharp.PipeLine allAvailableTask[ i ] = NodeRunner.Run(); } } + /**/ PipelineNode node; - while( !cts.Token.IsCancellationRequested && NodeRunner.CurrentBlueprint - .RequestNextNativeNode( - out node ) ) + while( !cts.Token.IsCancellationRequested && + NodeRunner.CurrentPipeline.RequestNextMainThreadNode( out node ) ) { node.Run(); - if( !NodeRunner.CurrentBlueprint.IsRunning ) + if( !NodeRunner.CurrentPipeline.IsRunning ) { break; } } - ( NodeRunner.CurrentBlueprint.EndLayer as EndingNode )!.Run(); - return pipelineInWaiting.TryPeek( out NodeRunner.CurrentBlueprint ); + + while( ( NodeRunner.CurrentPipeline != null ) && + NodeRunner.CurrentPipeline.IsRunning && + !cts.Token.IsCancellationRequested && + NodeRunner.CurrentPipeline!.RequestNexConcurrentNode( out node ) ) + { + node.Run(); + if( !NodeRunner.CurrentPipeline!.IsRunning ) + { + break; + } + } + ( NodeRunner.CurrentPipeline!.EndLayer as EndingNode )!.Run(); + bool isEmpty = pipelineInWaiting.TryPop( out PipelineScheduler? pipeline ); + NodeRunner.CurrentPipeline = pipeline!; + return isEmpty; + } + + /// + /// Only the following occasions of calling are valid: 1. no bp is + /// running or the only bp is quitting.2. calling from the main thread or a + /// thread the current bp is running on. + /// + internal static bool IsValidCalling() + { + if( ( NodeRunner.CurrentPipeline == null ) || //no bp running at all + ( ( pipelineInWaiting.IsEmpty ) && ( NodeRunner.CurrentPipeline.IsRunning == false ) ) ) + { + // a bp is quitting + //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; } private static NodeRunner[] CreateBlueprintRunnerArray() @@ -200,7 +207,7 @@ namespace StgSharp.PipeLine internal class NodeRunner : CancellableTask { - private static PipelineScheduler _current; + private static volatile PipelineScheduler? _current; internal NodeRunner() : base() @@ -208,9 +215,10 @@ namespace StgSharp.PipeLine _startup = InternalRun; } - internal static ref PipelineScheduler CurrentBlueprint + internal static PipelineScheduler? CurrentPipeline { - get => ref _current; + get => _current; + set => _current = value; } internal static NodeRunner Run() @@ -225,16 +233,14 @@ namespace StgSharp.PipeLine private static void InternalRun( CancellationToken token ) { - //Console.WriteLine("Task Begin"); PipelineNode item; - while( ( CurrentBlueprint != null ) && CurrentBlueprint.IsRunning && !token.IsCancellationRequested && CurrentBlueprint.RequestNexGlobalNode( - out item ) ) - { - //Console.WriteLine($"Get node of {item.Name}, going to run."); + Console.WriteLine( $"Global thread {Environment.CurrentManagedThreadId} starts." ); + while( ( CurrentPipeline != null ) && + CurrentPipeline.IsRunning && + !token.IsCancellationRequested && + CurrentPipeline.RequestNexConcurrentNode( out item ) ) { item.Run(); } - - //Console.WriteLine("Task Completed"); } }//------------------------------------- End of Class ------------------------------------------ diff --git a/StgSharp.Common/PipeLine/PipelineMarshal.cs b/StgSharp.Common/PipeLine/PipelineMarshal.cs new file mode 100644 index 00000000..1941b1dc --- /dev/null +++ b/StgSharp.Common/PipeLine/PipelineMarshal.cs @@ -0,0 +1,118 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="PipelineMarshal.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.Net.Http; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.PipeLine +{ + public static class PipelineMarshal + { + + public static IEnumerable GetNodeSortedEnumeration( + PipelineScheduler scheduler ) + { + ArgumentNullException.ThrowIfNull( scheduler ); + return new PipelineNodeEnumerator( scheduler ) + { + _count = scheduler._allNode.Count, + }; + } + + private class PipelineNodeEnumerator : ICollection + { + + private readonly List> _mt, _c; + + public int _count; + + public PipelineNodeEnumerator( PipelineScheduler scheduler ) + { + if( !scheduler.TryGetAllNode( out _mt, out _c ) ) { + throw new InvalidOperationException( "Binded scheduler is not sorted." ); + } + } + + public bool IsReadOnly => true; + + public int Count => _count; + + public IEnumerator GetEnumerator() + { + for( int i = 1; i < _mt.Count; i++ ) + { + foreach( PipelineNode node in _mt[ i ] ) { + yield return node; + } + foreach( PipelineNode node in _c[ i ] ) { + yield return node; + } + } + } + + void ICollection.Add( PipelineNode item ) + { + throw new NotSupportedException(); + } + + void ICollection.Clear() + { + throw new NotSupportedException(); + } + + bool ICollection.Contains( PipelineNode item ) + { + throw new NotSupportedException(); + } + + void ICollection.CopyTo( PipelineNode[] array, int arrayIndex ) + { + throw new NotSupportedException(); + } + + bool ICollection.Remove( PipelineNode item ) + { + throw new NotSupportedException(); + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + } + + } +} diff --git a/StgSharp.Common/PipeLine/PipelineNodeLabel.cs b/StgSharp.Common/PipeLine/PipelineNodeLabel.cs new file mode 100644 index 00000000..8663b671 --- /dev/null +++ b/StgSharp.Common/PipeLine/PipelineNodeLabel.cs @@ -0,0 +1,77 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="PipelineNodeLabel.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.Linq; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.PipeLine +{ + public abstract record class PipelineNodeLabel + { + public static PipelineNodeLabel Empty => PipelineNodeLabelEmpty.Only; + + public abstract int ComputeHashCode(); + + public override int GetHashCode() + { + return ComputeHashCode(); + } + } + + public record class PipelineNodeStringLabel : PipelineNodeLabel + { + public PipelineNodeStringLabel( string name ) + { + Name = name; + } + + public string Name { get; } + + public override int ComputeHashCode() + { + return string.GetHashCode( Name ); + } + } + + internal record class PipelineNodeLabelEmpty : PipelineNodeLabel + { + public static PipelineNodeLabelEmpty Only { get; } = new PipelineNodeLabelEmpty(); + + public override int ComputeHashCode() + { + return 0; + } + } +} diff --git a/StgSharp.Common/PipeLine/PipelineNodePort.cs b/StgSharp.Common/PipeLine/PipelineNodePort.cs index bb8c6859..0c3bb7f8 100644 --- a/StgSharp.Common/PipeLine/PipelineNodePort.cs +++ b/StgSharp.Common/PipeLine/PipelineNodePort.cs @@ -38,120 +38,153 @@ using System.Threading.Tasks; namespace StgSharp.PipeLine { - public class PipelineNodeExport + public class PipelineNodeInPort { - private HashSet _linkerSet = new HashSet(); - private SemaphoreSlim formerCompleteSemaphore; + private HashSet _linkerSet = new HashSet(); - public PipelineNodeExport( PipelineNode container, string name ) + public PipelineNodeInPort( PipelineNode container, string label ) { Container = container; - Name = name; - formerCompleteSemaphore = new SemaphoreSlim( initialCount: 0, maxCount: 1 ); + Label = label; } + public IEnumerable LinkedPorts => _linkerSet; + public PipelineNode Container { get; init; } public SemaphoreSlim Waiter { get; init; } - public string Name { get; init; } + public string Label { get; init; } - public void Connect( PipelineNodeImport port ) + internal HashSet Linkers => _linkerSet; + + public void Connect( PipelineNodeOutPort port ) { ArgumentNullException.ThrowIfNull( port ); - if( _linkerSet.Add( port ) ) { - Container.Next.Add( port.Container ); - } - } - - public static void SkipAll( Dictionary ports ) - { - if( ports is null ) { - return; - } - foreach( PipelineNodeExport port in ports.Values ) { - port.Waiter.Release(); - } - } - - public void TransmitValue( IPipeLineConnectionPayload value ) - { - foreach( PipelineNodeImport item in _linkerSet ) { } - } - - public void WaitAll( IEnumerable ports ) - { - if( ports is null ) { - return; - } - foreach( PipelineNodeExport port in ports ) { - port.Waiter.Wait(); - } - } - - } - - public class PipelineNodeImport - { - - private HashSet _linkerSet = new HashSet(); - - public PipelineNodeImport( PipelineNode container, string name ) - { - Container = container; - Name = name; - } - - public IEnumerable LinkedPorts => _linkerSet; - - public PipelineNode Container { get; init; } - - public SemaphoreSlim Waiter { get; init; } - - public string Name { get; init; } - - public void Connect( PipelineNodeExport port ) - { - ArgumentNullException.ThrowIfNull( port ); - if( _linkerSet.Add( port ) ) { + if( _linkerSet.Add( port ) ) + { + port.Linkers.Add( this ); Container.Previous.Add( port.Container ); + port.Container.Next.Add( Container ); } } public IEnumerator GetFormerNodes() { - foreach( PipelineNodeExport port in _linkerSet ) { + foreach( PipelineNodeOutPort port in _linkerSet ) { yield return port.Container; } } public void Wait() { - foreach( PipelineNodeExport connector in _linkerSet ) { - connector.Waiter.Wait(); - } + PipelineNodeOutPort.WaitAll( _linkerSet ); } - public static void WaitAll( IDictionary ports ) + public static void WaitAll( IDictionary ports ) { if( ports is null ) { return; } - foreach( PipelineNodeImport port in ports.Values ) { + foreach( PipelineNodeInPort port in ports.Values ) { port.Wait(); } } - public static void WaitAll( IEnumerable ports ) + public static void WaitAll( IEnumerable ports ) { if( ports is null ) { return; } - foreach( PipelineNodeImport port in ports ) { + foreach( PipelineNodeInPort port in ports ) { port.Wait(); } } } + + public class PipelineNodeOutPort + { + + private HashSet _linkerSet = new HashSet(); + private volatile int _passCount; + private SemaphoreSlim formerCompleteSemaphore; + + public PipelineNodeOutPort( PipelineNode container, string label ) + { + Container = container; + Label = label; + formerCompleteSemaphore = new SemaphoreSlim( initialCount: 0, maxCount: 1 ); + } + + public PipelineNode Container { get; init; } + + public string Label { get; init; } + + internal HashSet Linkers => _linkerSet; + + private SemaphoreSlim Waiter => formerCompleteSemaphore; + + public void Connect( PipelineNodeInPort port ) + { + ArgumentNullException.ThrowIfNull( port ); + if( _linkerSet.Add( port ) ) + { + port.Linkers.Add( this ); + Container.Next.Add( port.Container ); + port.Container.Previous.Add( Container ); + } + } + + public void Release() + { + if( _passCount == 0 ) + { + Waiter.Release(); + } else + { + return; + } + } + + public static void SkipAll( Dictionary ports ) + { + if( ports is null ) { + return; + } + foreach( PipelineNodeOutPort port in ports.Values ) { + port.Release(); + } + } + + public void TransmitValue( IPipeLineConnectionPayload value ) + { + foreach( PipelineNodeInPort item in _linkerSet ) { } + } + + public static void WaitAll( IEnumerable ports ) + { + if( ports is null ) { + return; + } + foreach( PipelineNodeOutPort port in ports ) { + port.Wait(); + } + } + + internal void Wait() + { + Waiter.Wait(); + if( _passCount >= _linkerSet.Count ) + { + Interlocked.Exchange( ref _passCount, 0 ); + } else + { + Interlocked.Increment( ref _passCount ); + Waiter.Release(); + } + } + + } } diff --git a/StgSharp.Common/PipeLine/PipelineScheduler.cs b/StgSharp.Common/PipeLine/PipelineScheduler.cs index 000eb3f7..5ae5485c 100644 --- a/StgSharp.Common/PipeLine/PipelineScheduler.cs +++ b/StgSharp.Common/PipeLine/PipelineScheduler.cs @@ -49,44 +49,41 @@ namespace StgSharp.PipeLine { private BeginningNode _beginning; - private Dictionary allNode; + private bool _isAvailable = false; private EndingNode _ending; - private List - _concurrentNodes = new List(), - _mainThreadNodes = new List(); - - private List globalNodeList; - private List mainThreadNodeList; - - private SemaphoreSlim runningStat; - - internal int currentGlobalNodeIndex; - internal int currentNativeNodeIndex; + private int mtLevel, cLevel,mtIndex, cIndex; + private List> _concurrentNodes, _mainThreadNodes ; + private SemaphoreSlim runningStat,_concurrentLock = new SemaphoreSlim( 1, 1 ); + internal Dictionary _allNode; public PipelineScheduler() { - allNode = new Dictionary(); - globalNodeList = new List(); - mainThreadNodeList = new List(); + _allNode = new Dictionary(); runningStat = new SemaphoreSlim( 1, 1 ); _beginning = new BeginningNode( this ); _ending = new EndingNode( this ); } + /**/ + + public PipelineNode this[ PipelineNodeLabel label ] + { + get { return _allNode[ label ]; } + } public bool IsRunning { get => runningStat.CurrentCount == 0; } - public IEnumerable InputInterfacesName + public IEnumerable InputPortName { - get { return _beginning.OutputPorts.Keys; } + get => _beginning.InputPorts.Keys; } - public IEnumerable OutputInterfacesName + public IEnumerable OutputPortName { - get { return _beginning.OutputPorts.Keys; } + get => _beginning.OutputPorts.Keys; } public PipelineNode BeginLayer => _beginning; @@ -104,112 +101,196 @@ namespace StgSharp.PipeLine { get => runningStat; } - /**/ public void AddNode( PipelineNode node, bool isNative ) { ArgumentNullException.ThrowIfNull( node ); node.IsNative = isNative; - allNode.Add( node.Name, node ); + _allNode.TryAdd( node.Label, node ); } - public void ArrangeNodeOrder() + public void ArrangeNodes() { - LinkedList _cache = new LinkedList(); - foreach( PipelineNode node in _beginning.Next ) + if( _isAvailable ) { + return; + } + int maxLevel = 1; + Queue completedNodes = new Queue(); + foreach( PipelineNode item in _beginning.Next ) { - if( node.IsNative ) + item.TryIncreaseLevelTo( 1 ); + completedNodes.Enqueue( item ); + } + + //calc level of nodes O(V) + while( completedNodes.Count > 0 ) + { + PipelineNode u = completedNodes.Dequeue(); + foreach( PipelineNode v in u.Next ) { - _mainThreadNodes.Add( node ); + if( !v.TryIncreaseLevelTo( u.Level + 1 ) ) { + throw new InvalidOperationException( "Ring in DAG detected." ); + } + if( v.RemainingIncreaseCount == 0 ) + { + completedNodes.Enqueue( v ); + maxLevel = int.Max( maxLevel, v.Level ); + } + } + } + + //bucket sort of nodes, O(E) + _concurrentNodes = new List>( maxLevel + 1 ); + _mainThreadNodes = new List>( maxLevel + 1 ); + for( int i = 0; i <= maxLevel; i++ ) + { + _concurrentNodes.Add( [] ); + _mainThreadNodes.Add( [] ); + } + foreach( PipelineNode item in _allNode.Values ) + { + if( item.IsNative ) + { + _mainThreadNodes[ item.Level ].Add( item ); } else { - _concurrentNodes.Add( node ); - } - foreach( PipelineNode item in node.Next ) - { - item.Previous.Remove( node ); - _cache.AddLast( item ); + _concurrentNodes[ item.Level ].Add( item ); } } - while( _cache.Count > 0 ) - { - LinkedListNode begin = _cache.First!,current = begin,zero; - do - { - PipelineNode node = current.Value; - if( current.Value.Previous.Count == 0 ) - { - zero = current; - current = current.Next!; - if( node.IsNative ) - { - _mainThreadNodes.Add( node ); - } else - { - _concurrentNodes.Add( node ); - } - foreach( PipelineNode item in node.Next ) - { - item.Previous.Remove( node ); - _cache.AddLast( item ); - } - _cache.Remove( zero ); - } else - { - current = current.Next!; - } - } while (current.Next != begin); + foreach( List item in _concurrentNodes ) { + item.TrimExcess(); } + foreach( List item in _mainThreadNodes ) { + item.TrimExcess(); + } + _isAvailable = true; } - public PipelineNode Create( [NotNull]IConvertableToPipelineNode body, string name ) + public PipelineNode Create( + PipelineNodeLabel label, + [NotNull] IConvertableToPipelineNode body ) { - PipelineNode node = new PipelineNode( name, body, false ); + if( _allNode.TryGetValue( label, out PipelineNode? node ) ) { + throw new InvalidOperationException( "Label has exist in scheduler." ); + } + node = new PipelineNode( label, body, false ); + _allNode.Add( label, node ); return node; } + public PipelineNode GetNode( PipelineNodeLabel label ) + { + if( _allNode.TryGetValue( label, out PipelineNode? node ) ) + { + return node; + } else + { + throw new KeyNotFoundException(); + } + } + + public void LinkToInput( PipelineNodeInPort port ) + { + ArgumentNullException.ThrowIfNull( port ); + PipelineNodeOutPort p = _beginning.DefaultOut; + p.Connect( port ); + } + + public void LinkToInput( PipelineNodeInPort port, string inputPortName ) + { + ArgumentNullException.ThrowIfNull( port ); + PipelineNodeOutPort p = _beginning.DefineCertainOutputPort( inputPortName ); + p.Connect( port ); + } + [MethodImpl( MethodImplOptions.AggressiveInlining )] - public void SetInput( params (string name, IPipeLineConnectionPayload arg)[] parameters ) + public void SetInput( params (string label, IPipeLineConnectionPayload arg)[] parameters ) { _beginning.SetInputData( parameters ); } public void Terminate() { - Interlocked.Exchange( ref currentGlobalNodeIndex, int.MaxValue ); - Interlocked.Exchange( ref currentNativeNodeIndex, int.MaxValue ); + _concurrentLock.Wait(); + (mtLevel, cLevel, mtIndex, cIndex) = (int.MaxValue, int.MaxValue, int.MaxValue, int.MaxValue); + _concurrentLock.Release(); } - internal bool RequestNexGlobalNode( out PipelineNode node ) + public bool TryGetAllNode( + out List> mainThreadNodes, + out List> concurrentNodes ) { - if( currentGlobalNodeIndex < globalNodeList.Count ) + if( _isAvailable ) { - node = globalNodeList[ currentGlobalNodeIndex ]; - Interlocked.Increment( ref currentGlobalNodeIndex ); + mainThreadNodes = _mainThreadNodes; + concurrentNodes = _concurrentNodes; return true; } - node = default!; + mainThreadNodes = null; + concurrentNodes = null; return false; } - internal bool RequestNextNativeNode( out PipelineNode node ) + internal bool RequestNexConcurrentNode( out PipelineNode node ) { - if( currentNativeNodeIndex < mainThreadNodeList.Count ) + int index, level; + if( cLevel >= _concurrentNodes.Count ) { - node = mainThreadNodeList[ currentNativeNodeIndex ]; - Interlocked.Increment( ref currentNativeNodeIndex ); - return true; + node = null!; + return false; } - node = default!; - return false; + _concurrentLock.Wait(); + while( cIndex >= _concurrentNodes[ cLevel ].Count ) + { + Interlocked.Increment( ref cLevel ); + Interlocked.Exchange( ref cIndex, 0 ); + if( cLevel >= _concurrentNodes.Count ) + { + node = null!; + return false; + } + } + index = cIndex; + level = cLevel; + Interlocked.Increment( ref cIndex ); + _concurrentLock.Release(); + node = _concurrentNodes[ level ][ index ]; + return true; + } + + internal bool RequestNextMainThreadNode( out PipelineNode node ) + { + if( mtLevel >= _mainThreadNodes.Count ) + { + node = null!; + return false; + } + while( mtIndex >= _mainThreadNodes[ cLevel ].Count ) + { + Interlocked.Increment( ref mtLevel ); + Interlocked.Exchange( ref mtIndex, 0 ); + if( mtLevel >= _mainThreadNodes.Count ) + { + node = null!; + return false; + } + } + node = _mainThreadNodes[ mtLevel ][ mtIndex ]; + return true; + } + + internal void ResetIndex() + { + (mtLevel, cLevel, mtIndex, cIndex) = (0, 0, 0, 0); + _concurrentLock.Release(); } void IConvertableToPipelineNode.NodeMain( - in Dictionary input, - in Dictionary output ) + in Dictionary input, + in Dictionary output ) { PipeLineRunner.Run( this ); - PipelineNodeExport.SkipAll( output ); + PipelineNodeOutPort.SkipAll( output ); } ~PipelineScheduler() diff --git a/StgSharp.Common/PipeLine/PortArgs.cs b/StgSharp.Common/PipeLine/PortArgs.cs index 59bfe99f..213ca1c7 100644 --- a/StgSharp.Common/PipeLine/PortArgs.cs +++ b/StgSharp.Common/PipeLine/PortArgs.cs @@ -44,11 +44,11 @@ namespace StgSharp.PipeLine { private protected IPipeLineConnectionPayload args; - private protected PipelineNodeExport input; - private protected PipelineNodeImport output; + private protected PipelineNodeInPort output; + private protected PipelineNodeOutPort input; private protected SemaphoreSlim formerCompleteSemaphore; - public PipelineConnector( PipelineNodeExport former, PipelineNodeImport after ) + public PipelineConnector( PipelineNodeOutPort former, PipelineNodeInPort after ) { this.input = former; this.output = after; @@ -61,9 +61,9 @@ namespace StgSharp.PipeLine set => args = value; } - public PipelineNodeExport Input => input; + public PipelineNodeInPort Output => output; - public PipelineNodeImport Output => output; + public PipelineNodeOutPort Input => input; public static void SkipAll( Dictionary ports ) { diff --git a/StgSharp.Common/PipeLine/SideNode.cs b/StgSharp.Common/PipeLine/SideNode.cs index db85ae4c..7f349f81 100644 --- a/StgSharp.Common/PipeLine/SideNode.cs +++ b/StgSharp.Common/PipeLine/SideNode.cs @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using System; using System.Collections.Generic; using System.Globalization; @@ -43,18 +42,24 @@ namespace StgSharp.PipeLine internal sealed class BeginningNode : PipelineNode { + public const string OutName = "default"; + private PipelineScheduler _bp; public BeginningNode( PipelineScheduler bp ) - : base( DefaultOperation, name: "BeginningNode", true, ["default"], ["default"] ) + : base( + DefaultOperation, new PipelineNodeStringLabel( "BeginningNode" ), true, ["default"], + [OutName] ) { _bp = bp; } + public PipelineNodeOutPort DefaultOut => OutputPorts[ OutName ]; + public override void Run() { _bp.RunningStat.Wait(); - PipelineNodeExport.SkipAll( _output ); + PipelineNodeOutPort.SkipAll( _output ); } internal void SetInputData( IEnumerable<(string, IPipeLineConnectionPayload)> data ) @@ -75,16 +80,17 @@ namespace StgSharp.PipeLine private PipelineScheduler _bp; public EndingNode( PipelineScheduler bp ) - : base( DefaultOperation, name: "EndingNode", true, ["default"], ["default"] ) + : base( + DefaultOperation, name: new PipelineNodeStringLabel( "EndingNode" ), true, ["default"], + ["default"] ) { _bp = bp; } public override void Run() { - PipelineNodeImport.WaitAll( _input ); - Interlocked.Exchange( ref _bp.currentGlobalNodeIndex, 0 ); - Interlocked.Exchange( ref _bp.currentNativeNodeIndex, 0 ); + PipelineNodeInPort.WaitAll( _input ); + _bp.ResetIndex(); _bp.RunningStat.Release(); } diff --git a/StgSharp.Common/PlainGeometryCollisionSensor.cs b/StgSharp.Common/PlainGeometryCollisionSensor.cs index e8f2bfba..17333911 100644 --- a/StgSharp.Common/PlainGeometryCollisionSensor.cs +++ b/StgSharp.Common/PlainGeometryCollisionSensor.cs @@ -34,38 +34,40 @@ using System; namespace StgSharp { - public class CollisionEventArgs:EventArgs + public class CollisionEventArgs : EventArgs { - public CollisionEventArgs(IGeometry target, IGeometry boarder) + + 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 + public class PlainGeometryCollisionSensor where TBoarder: IGeometry + where TTarget: IGeometry { + + internal EventHandler _rule; internal PlainGeometry _boarder; internal PlainGeometry _target; - internal EventHandler _rule; public event EventHandler Rule { add { _rule += value; } - remove + remove { - if (value == null) - { + if( value == null ) { return; } -#pragma warning disable CS8601 + #pragma warning disable CS8601 _rule -= value; -#pragma warning restore CS8601 + #pragma warning restore CS8601 } } diff --git a/StgSharp.Common/Stg/Bullet.cs b/StgSharp.Common/Stg/Bullet.cs index ef4c73ec..406236e6 100644 --- a/StgSharp.Common/Stg/Bullet.cs +++ b/StgSharp.Common/Stg/Bullet.cs @@ -7,7 +7,7 @@ // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation -// files (the ��Software��), to deal in the Software without restriction, +// files (the “Software”), to deal in the Software without restriction, // including without limitation the rights to use, copy, modify, merge, // publish, distribute, sublicense, and/or sell copies of the Software, // and to permit persons to whom the Software is furnished to do so, @@ -17,7 +17,7 @@ // this permission notice shall be included in all copies // or substantial portions of the Software. // -// THE SOFTWARE IS PROVIDED ��AS IS��, +// THE SOFTWARE IS PROVIDED “AS IS”, // WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, // INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using StgSharp.Geometries; using StgSharp.Math; @@ -40,13 +39,13 @@ namespace StgSharp.Gaming { protected Bullet( - PlainInstancingBuffer buffer, - GeometryMotion movement, - Vec2 beginPosition, - float angle, - float scale ) + PlainInstancingBuffer buffer, + GeometryMotion movement, + Vec2 beginPosition, + float angle, + float scale ) { - ArgumentNullException.ThrowIfNull(buffer); + ArgumentNullException.ThrowIfNull( buffer ); GlobalBuffer = buffer; BufferId = buffer.CreateInstanceID(); ( ( IInstancing )this ).Scale = scale; @@ -55,40 +54,20 @@ namespace StgSharp.Gaming Motion = movement; } - public GeometryMotion Motion - { - get; - set; - } + public GeometryMotion Motion { get; set; } - public IInstancingBuffer GlobalBuffer - { - get; - set; - } + public IInstancingBuffer GlobalBuffer { get; set; } - public int BufferId - { - get; - set; - } + public int BufferId { get; set; } - public Vec2 CenterPosition - { - get; - set; - } + public Vec2 CenterPosition { get; set; } public bool CollideWith( IPlainEntity entity ) { throw new System.NotImplementedException(); } - Vec3 IInstancing.CenterPositionGlobal - { - get; - set; - } + 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 index 63f67677..cebc4ab8 100644 --- a/StgSharp.Common/Stg/CollisionTexture.cs +++ b/StgSharp.Common/Stg/CollisionTexture.cs @@ -28,10 +28,10 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- -using StgSharp.Internal; using StgSharp.Geometries; using StgSharp.Graphics; using StgSharp.Graphics.OpenGL; +using StgSharp.Internal; using StgSharp.Math; using StgSharp.MVVM; @@ -72,8 +72,7 @@ namespace StgSharp.Stg public override bool IsContextSharable => false; - public void GenerateCollisionTexture( - IEnumerable bufferEnumeration ) + public void GenerateCollisionTexture( IEnumerable bufferEnumeration ) { fbo.Bind( 0 ); GL.ClearColor( 0, 0, 0, 1 ); @@ -81,7 +80,8 @@ namespace StgSharp.Stg generatingShader.Use(); vao.Bind( 0 ); - foreach( IInstancingBuffer item in bufferEnumeration ) { + foreach( IInstancingBuffer item in bufferEnumeration ) + { IGeometry g = item.TypicalShape; if( !( g is PlainGeometry ) ) { @@ -92,42 +92,33 @@ namespace StgSharp.Stg ebo.Bind( 0 ); ebo.SetValue( 0, g.VertexIndices, BufferUsage.StreamDraw ); - vbo.WriteVectorData( - 0, item.CoordAndRotationSpan, BufferUsage.StreamDraw ); + vbo.WriteVectorData( 0, item.CoordAndRotationSpan, BufferUsage.StreamDraw ); + vao.SetVertexAttribute( 1, 3, TypeCode.Single, false, 4 * sizeof( float ), 0 ); vao.SetVertexAttribute( - 1, 3, TypeCode.Single, false, 4 * sizeof( float ), 0 ); - vao.SetVertexAttribute( - 2, 1, TypeCode.Single, false, 4 * sizeof( float ), - 3 * sizeof( float ) ); + 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.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 ); + 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, + 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 ); + 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 ); + 1, ( int )( ( new Radius( Scaler.Pi ) ) / angleStride ), name, IntPtr.Zero ); PlatformSpecifiedInitialize(); CustomizeInit(); @@ -145,12 +136,10 @@ namespace StgSharp.Stg generatingShader = CreateShaderProgram(); Shader vertexShader = CreateShaderSegment( ShaderType.Vertex, 1 ); - Shader fragmentShader = CreateShaderSegment( - ShaderType.Fragment, 1 ); + Shader fragmentShader = CreateShaderSegment( ShaderType.Fragment, 1 ); vertexShader.Compile( 0, InternalIO.CollisionTextureVertexShader ); - fragmentShader.Compile( - 0, InternalIO.CollisionTextureFragmentShader ); + fragmentShader.Compile( 0, InternalIO.CollisionTextureFragmentShader ); vertexShader.AttachTo( 0, generatingShader ); fragmentShader.AttachTo( 0, generatingShader ); @@ -164,27 +153,24 @@ namespace StgSharp.Stg fbo = CreateFrameBuffer( 1 ); rbo = CreateRenderBuffer( 1 ); - GL.SetRenderBufferStorage( - RenderBufferInternalFormat.Depth24_Stencil8, this.Size ); + 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() ); + 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 ); + t.Set2dFilterProperty( 0, TextureFilter.Nearest, TextureFilter.Nearest ); GL.FrameBufferTexture2d( - FrameBufferTarget.All, glAttachment.Color( 0 ), - Texture2DTarget.Texture2D, t[ 0 ], 0 ); + FrameBufferTarget.All, glAttachment.Color( 0 ), Texture2DTarget.Texture2D, t[ 0 ], + 0 ); - GL.CombineFrameBufferRenderBuffer( - FrameBufferAttachment.Color, rbo[ 0 ] ); + GL.CombineFrameBufferRenderBuffer( FrameBufferAttachment.Color, rbo[ 0 ] ); textureOutput = new float[this.Width]; } diff --git a/StgSharp.Common/Stg/Touhou/View/OpenningView.cs b/StgSharp.Common/Stg/Touhou/View/OpenningView.cs index f426bbc1..64995b76 100644 --- a/StgSharp.Common/Stg/Touhou/View/OpenningView.cs +++ b/StgSharp.Common/Stg/Touhou/View/OpenningView.cs @@ -28,7 +28,7 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- -using StgSharp.MVVM.View; +using StgSharp.MVVM; using StgSharp.MVVM.ViewModel; using System; @@ -42,8 +42,7 @@ namespace StgSharp.Stg.Touhou public abstract class OpenningView : ViewBase { - public override void CustomizedInitialize( - ViewModelBase viewModelBinding ) + public override void CustomizedInitialize( ViewModelBase viewModelBinding ) { throw new NotImplementedException(); } diff --git a/StgSharp.Common/StgSharp.Common.csproj b/StgSharp.Common/StgSharp.Common.csproj index 34092131..f9c95fe0 100644 --- a/StgSharp.Common/StgSharp.Common.csproj +++ b/StgSharp.Common/StgSharp.Common.csproj @@ -105,7 +105,7 @@ - + diff --git a/StgSharp.Common/Threading/CancellableTask.cs b/StgSharp.Common/Threading/CancellableTask.cs index bd8e289d..2dac6c94 100644 --- a/StgSharp.Common/Threading/CancellableTask.cs +++ b/StgSharp.Common/Threading/CancellableTask.cs @@ -38,12 +38,13 @@ using System.Threading.Tasks; namespace StgSharp.Threading { - public class CancellableTask:IDisposable + public class CancellableTask : IDisposable { + + private bool disposedValue; + private CancellationTokenSource cts; private protected Action _startup; private protected Task _internalTask; - private CancellationTokenSource cts; - private bool disposedValue; private protected CancellableTask() { @@ -82,9 +83,23 @@ namespace StgSharp.Threading _internalTask.Wait(); } + // ~CancellableTask() + // { + // Dispose(disposing: false); + // } + + public void Dispose() + { + Dispose( disposing: true ); + GC.SuppressFinalize( this ); + } + public static CancellableTask Run( Action startup ) { - CancellableTask ret = new CancellableTask { _startup = startup }; + CancellableTask ret = new CancellableTask + { + _startup = startup + }; ret._internalTask = Task.Run( ret.InternalAction ); return ret; } @@ -104,10 +119,30 @@ namespace StgSharp.Threading [MethodImpl( MethodImplOptions.AggressiveInlining )] internal void InternalAction() { - //Console.WriteLine($"Task {Task.CurrentId} is running."); _startup( Cts.Token ); } + protected virtual void Dispose( bool disposing ) + { + if( !disposedValue ) + { + if( disposing ) + { + if( IsCompleted ) + { + cts.Dispose(); + _internalTask.Dispose(); + } else + { + throw new InvalidOperationException( + "Cannot dispose a cancellable task before completed" ); + } + } + + disposedValue = true; + } + } + public static implicit operator Task( CancellableTask task ) { return task._internalTask; @@ -118,36 +153,5 @@ namespace StgSharp.Threading Cts.Dispose(); } - protected virtual void Dispose(bool disposing) - { - if (!disposedValue) - { - if (disposing) - { - if (IsCompleted) - { - cts.Dispose(); - _internalTask.Dispose(); - } - else - { - throw new InvalidOperationException("Cannot dispose a cancellable task before completed"); - } - } - - disposedValue = true; - } - } - - // ~CancellableTask() - // { - // Dispose(disposing: false); - // } - - public void Dispose() - { - Dispose(disposing: true); - GC.SuppressFinalize(this); - } } } diff --git a/StgSharp.Common/Threading/EmptyThread.cs b/StgSharp.Common/Threading/EmptyThread.cs index 1340b9f2..064e6216 100644 --- a/StgSharp.Common/Threading/EmptyThread.cs +++ b/StgSharp.Common/Threading/EmptyThread.cs @@ -41,8 +41,7 @@ namespace StgSharp.Threading public static partial class ThreadHelper { - private static readonly Thread _emptyThreadCache = new Thread( - () => { } ); + private static readonly Thread _emptyThreadCache = new Thread( () => { } ); static ThreadHelper() { @@ -50,8 +49,8 @@ namespace StgSharp.Threading } /// - /// An individual thread doing nothing, and its always returns false. + /// An individual thread doing nothing, and its always returns false. /// public static Thread EmptyThread { diff --git a/StgSharp.Common/Timing/TimeFunction.cs b/StgSharp.Common/Timing/TimeFunction.cs index 388f07c3..c8834ab1 100644 --- a/StgSharp.Common/Timing/TimeFunction.cs +++ b/StgSharp.Common/Timing/TimeFunction.cs @@ -44,9 +44,9 @@ namespace StgSharp.Timing internal TimeFunction() { } public TimeFunction( - TimeSpanProvider timeSpanProvider, - Func timeRelatedCalculation, - float range ) + TimeSpanProvider timeSpanProvider, + Func timeRelatedCalculation, + float range ) { _timeProvider = timeSpanProvider; _timeRelatedCalculation = timeRelatedCalculation; @@ -84,28 +84,20 @@ namespace StgSharp.Timing if( _timeProvider.CurrentSecond < _ending ) { return 0; } - return _timeRelatedCalculation( - _timeProvider.CurrentSecond - _beginning ); + return _timeRelatedCalculation( _timeProvider.CurrentSecond - _beginning ); } - public static TimeFunction Proportional( - TimeSpanProvider time, - float begin, - float range ) + 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 ) + public virtual TimeFunction Renew( (Func func, float range) funcPair ) { - return new TimeFunction( - _timeProvider, funcPair.func, funcPair.range ); + return new TimeFunction( _timeProvider, funcPair.func, funcPair.range ); } - public virtual TimeFunction Renew( - Func func, - float range ) + public virtual TimeFunction Renew( Func func, float range ) { return new TimeFunction( _timeProvider, func, range ); } @@ -121,8 +113,7 @@ namespace StgSharp.Timing { float range = _ending - _beginning; return new TimeFunction( - _timeProvider, p => _timeRelatedCalculation( range - p ), - range ); + _timeProvider, p => _timeRelatedCalculation( range - p ), range ); } } @@ -142,15 +133,12 @@ namespace StgSharp.Timing return 1; } - public override TimeFunction Renew( - (Func func, float range) funcPair ) + public override TimeFunction Renew( (Func func, float range) funcPair ) { throw new NotSupportedException(); } - public override TimeFunction Renew( - Func func, - float range ) + public override TimeFunction Renew( Func func, float range ) { throw new NotSupportedException(); } diff --git a/StgSharp.Common/Timing/TimeProvider.cs b/StgSharp.Common/Timing/TimeProvider.cs index f045b73c..7e5bfb8e 100644 --- a/StgSharp.Common/Timing/TimeProvider.cs +++ b/StgSharp.Common/Timing/TimeProvider.cs @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using StgSharp.Timing; using System; @@ -40,7 +39,7 @@ using System.Threading; namespace StgSharp { - public static partial class StgSharp + public static partial class World { internal static StgSharpTime mainTimeProvider = new StgSharpTime(); @@ -52,15 +51,14 @@ namespace StgSharp public sealed class StgSharpTime : TimeSourceProviderBase { - private static List subscriberList = new List( - ); + 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 static TimeSourceProviderBase OnlyInstance => World.MainTimeProvider; public override sealed void StartProvidingTime() { @@ -71,13 +69,14 @@ namespace StgSharp //speed test long totalMS, internalFrequncy = Stopwatch.Frequency; - for( int i = 0; i < 100; i++ ) { + for( int i = 0; i < 100; i++ ) + { totalMS = mainProvider.ElapsedTicks / ( internalFrequncy / ( 1000L * 1000L ) ); - for( int t = 0; t < 10; t++ ) { + for( int t = 0; t < 10; t++ ) + { if( totalMS < 1000 ) { subscriberList.Add( - new TimeSpanProvider( - 100L, TimeSpanProvider.DefaultProvider ) ); + new TimeSpanProvider( 100L, TimeSpanProvider.DefaultProvider ) ); } } } @@ -104,14 +103,12 @@ namespace StgSharp } } - protected override sealed void AddSubscriberUnsynced( - TimeSpanProvider subscriber ) + protected override sealed void AddSubscriberUnsynced( TimeSpanProvider subscriber ) { subscriberList.Add( subscriber ); } - protected override sealed void RemoveSubscriberUnsynced( - TimeSpanProvider subscriber ) + protected override sealed void RemoveSubscriberUnsynced( TimeSpanProvider subscriber ) { subscriberList.Remove( subscriber ); } @@ -122,24 +119,27 @@ namespace StgSharp lock( mainProvider ) { mainProvider.Restart(); } - while( mainProvider.IsRunning ) { + while( mainProvider.IsRunning ) + { totalMS = mainProvider.ElapsedTicks / ( internalFrequncy / ( 1000L * 1000L ) ); - if( subscriberList.Count == 0 ) { + if( subscriberList.Count == 0 ) + { continue; } CheckSubscriberSemaphore.Wait(); - List toRemoveList = new List( - ); - foreach( TimeSpanProvider subscriber in subscriberList ) { - if( !subscriber.CheckTime( totalMS ) ) { + 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 ); + $"Time subscriber {subscriber} is to be removed.", LogType.Info ); } ; } - if( toRemoveList.Count != 0 ) { + if( toRemoveList.Count != 0 ) + { foreach( TimeSpanProvider subscriber in toRemoveList ) { subscriberList.Remove( subscriber ); } diff --git a/StgSharp.Common/Timing/TimeSourceProvider.cs b/StgSharp.Common/Timing/TimeSourceProvider.cs index ea1fdacc..7ae8f283 100644 --- a/StgSharp.Common/Timing/TimeSourceProvider.cs +++ b/StgSharp.Common/Timing/TimeSourceProvider.cs @@ -39,8 +39,7 @@ namespace StgSharp.Timing public abstract class TimeSourceProviderBase { - private SemaphoreSlim _addSubscriberSemaphore = new SemaphoreSlim( - 1, 1 ); + private SemaphoreSlim _addSubscriberSemaphore = new SemaphoreSlim( 1, 1 ); protected SemaphoreSlim CheckSubscriberSemaphore { @@ -49,14 +48,17 @@ namespace StgSharp.Timing public void AddSubscriber( TimeSpanProvider subscriber ) { - try { + try + { _addSubscriberSemaphore.Wait(); AddSubscriberUnsynced( subscriber ); } - catch( Exception ) { + catch( Exception ) + { throw; } - finally { + finally + { _addSubscriberSemaphore.Release(); } } @@ -64,13 +66,16 @@ namespace StgSharp.Timing public void RemoveSubscriber( TimeSpanProvider subscriber ) { _addSubscriberSemaphore.Wait(); - try { + try + { RemoveSubscriberUnsynced( subscriber ); } - catch( Exception ) { + catch( Exception ) + { throw; } - finally { + finally + { _addSubscriberSemaphore.Release(); } } @@ -79,11 +84,9 @@ namespace StgSharp.Timing public abstract void StopProvidingTime(); - protected abstract void AddSubscriberUnsynced( - TimeSpanProvider subscriber ); + protected abstract void AddSubscriberUnsynced( TimeSpanProvider subscriber ); - protected abstract void RemoveSubscriberUnsynced( - TimeSpanProvider subscriber ); + protected abstract void RemoveSubscriberUnsynced( TimeSpanProvider subscriber ); } } diff --git a/StgSharp.Common/Timing/TimeSpanAwaitingToken.cs b/StgSharp.Common/Timing/TimeSpanAwaitingToken.cs index 7621d81c..bdea18e7 100644 --- a/StgSharp.Common/Timing/TimeSpanAwaitingToken.cs +++ b/StgSharp.Common/Timing/TimeSpanAwaitingToken.cs @@ -45,8 +45,7 @@ namespace StgSharp.Timing public sealed class TimeSpanAwaitingToken : IDisposable { - private static readonly ConcurrentStack s_unusedID = new ConcurrentStack( - [0] ); + private static readonly ConcurrentStack s_unusedID = new ConcurrentStack( [0] ); private static int s_maxID; private static readonly object s_lock = new object(); @@ -60,13 +59,16 @@ namespace StgSharp.Timing internal TimeSpanAwaitingToken( TimeSpanProvider provider ) { - if( s_unusedID.Count == 1 ) { - lock( s_lock ) { + if( s_unusedID.Count == 1 ) + { + lock( s_lock ) + { s_unusedID.TryPop( out int id ); TokenID = id; s_unusedID.Push( s_maxID++ ); } - } else { + } else + { s_unusedID.TryPop( out int id ); TokenID = id; } @@ -77,13 +79,16 @@ namespace StgSharp.Timing internal TimeSpanAwaitingToken( TimeSpanProvider provider, int count ) { - if( s_unusedID.Count == 1 ) { - lock( s_lock ) { + if( s_unusedID.Count == 1 ) + { + lock( s_lock ) + { s_unusedID.TryPop( out int id ); TokenID = id; s_unusedID.Push( s_maxID++ ); } - } else { + } else + { s_unusedID.TryPop( out int id ); TokenID = id; } @@ -130,12 +135,12 @@ namespace StgSharp.Timing public void Participant() { - lock( _participantObject ) { + lock( _participantObject ) + { _size++; SemaphoreSlim newSemaphore = new SemaphoreSlim( _awaitingSemaphore.CurrentCount, _size ); - Interlocked.Exchange( ref _awaitingSemaphore, newSemaphore ) - .Dispose(); + Interlocked.Exchange( ref _awaitingSemaphore, newSemaphore ).Dispose(); } } diff --git a/StgSharp.Common/Timing/TimeSpanProvider.cs b/StgSharp.Common/Timing/TimeSpanProvider.cs index a29eb27d..0fade796 100644 --- a/StgSharp.Common/Timing/TimeSpanProvider.cs +++ b/StgSharp.Common/Timing/TimeSpanProvider.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="TimeSpanProvider.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using System; using System.Collections.Concurrent; using System.Collections.Generic; @@ -40,7 +39,7 @@ using System.Threading; namespace StgSharp.Timing { /// - /// A microsecond-accuracy timer. It will refresh every a certain time span. + /// A microsecond-accuracy timer. It will refresh every a certain time span. /// public class TimeSpanProvider { @@ -58,18 +57,18 @@ namespace StgSharp.Timing private readonly TimeSourceProviderBase _timeSource; /// - /// Create a new and define the length of time span. Length - /// of a single time span is defined in microseconds. + /// 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 ) + /// + /// + /// + /// + /// + /// + public TimeSpanProvider( long spanMicroSeconds, TimeSourceProviderBase provider ) { - if( provider == null ) { - throw new ArgumentNullException( nameof( provider ) ); - } + ArgumentNullException.ThrowIfNull( provider ); _timeSource = provider; _spanLength = spanMicroSeconds; _maxSpanCount = int.MaxValue; @@ -80,18 +79,18 @@ namespace StgSharp.Timing } /// - /// Create a new and define the length of time span. Length - /// of a single time span is defined in seconds. + /// 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 ) + /// + /// + /// + /// + /// + /// + public TimeSpanProvider( double spanSeconds, TimeSourceProviderBase provider ) { - if( provider == null ) { - throw new ArgumentNullException( nameof( provider ) ); - } + ArgumentNullException.ThrowIfNull( provider ); _timeSource = provider; _spanLength = ( long )( spanSeconds * 1000L * 1000L ); _spanBegin = -_spanLength; @@ -103,23 +102,23 @@ namespace StgSharp.Timing } /// - /// Create a new and define the length of time span. Length - /// of a single time span is defined in microseconds. + /// 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 ) + /// + /// + /// + /// + /// + /// + /// + /// + /// + public TimeSpanProvider( long spanLength, long maxSpan, TimeSourceProviderBase provider ) { - if( provider == null ) { - throw new ArgumentNullException( nameof( provider ) ); - } + ArgumentNullException.ThrowIfNull( provider ); if( maxSpan <= 0 ) { - throw new ArgumentException( - "Sapn count cannot be smaller than zero" ); + throw new ArgumentException( "Sapn count cannot be smaller than zero" ); } _timeSource = provider; _spanLength = spanLength; @@ -151,14 +150,13 @@ namespace StgSharp.Timing } /// - /// Time source provider provided in internal framework. + /// Time source provider provided in internal framework. /// public static TimeSourceProviderBase DefaultProvider => StgSharpTime.OnlyInstance; public TimeSpanAwaitingToken ParticipantSpanAwaiting( int count ) { - TimeSpanAwaitingToken token = new TimeSpanAwaitingToken( - this, count ); + TimeSpanAwaitingToken token = new TimeSpanAwaitingToken( this, count ); _tokenToAdd.Enqueue( token ); return token; } @@ -173,12 +171,9 @@ namespace StgSharp.Timing Interlocked.Exchange( ref _maxSpanCount, 0 ); } - public void SubscribeToTimeSource( - TimeSourceProviderBase serviceHandler ) + public void SubscribeToTimeSource( TimeSourceProviderBase serviceHandler ) { - if( serviceHandler == null ) { - throw new ArgumentNullException( nameof( serviceHandler ) ); - } + ArgumentNullException.ThrowIfNull( serviceHandler ); if( _subscribed ) { return; } @@ -196,26 +191,29 @@ namespace StgSharp.Timing if( microseconds - _spanBegin < _spanLength ) { return true; } - while( !_tokenToAdd.IsEmpty ) { - _tokenToAdd.TryDequeue( out TimeSpanAwaitingToken tokenAdd ); + foreach( TimeSpanAwaitingToken tokenAdd in _tokenToAdd ) { _awaitingTokens.Add( tokenAdd ); } - while( !_tokenToQuit.IsEmpty ) { - _tokenToQuit.TryDequeue( out TimeSpanAwaitingToken tokenQuit ); + _tokenToAdd.Clear(); + foreach( TimeSpanAwaitingToken tokenQuit in _tokenToQuit ) + { _awaitingTokens.Remove( tokenQuit ); InternalIO.InternalWriteLog( - $"Awaiting token {tokenQuit!.TokenID} has been removed.", - LogType.Info ); + $"Awaiting token {tokenQuit!.TokenID} has been removed.", LogType.Info ); } + _tokenToQuit.Clear(); _spanBegin = microseconds; timeSpanCount++; - foreach( TimeSpanAwaitingToken item in _awaitingTokens ) { - if( item.AwaitingSemaphoreSlim.CurrentCount == 0 ) { + foreach( TimeSpanAwaitingToken item in _awaitingTokens ) + { + if( item.AwaitingSemaphoreSlim.CurrentCount == 0 ) + { item.AwaitingSemaphoreSlim.Release(); item.Refresh(); - } else { + } else + { item.MissRefresh(); } } @@ -223,8 +221,7 @@ namespace StgSharp.Timing return timeSpanCount < _maxSpanCount; } - public static explicit operator int( - [NotNull]TimeSpanProvider provider ) + public static explicit operator int( [NotNull]TimeSpanProvider provider ) { return provider.ToInt32(); } diff --git a/StgSharp.Common/bin/x64/Release/net8.0/StgSharp.Common.deps.json b/StgSharp.Common/bin/x64/Release/net8.0/StgSharp.Common.deps.json new file mode 100644 index 00000000..4c755f05 --- /dev/null +++ b/StgSharp.Common/bin/x64/Release/net8.0/StgSharp.Common.deps.json @@ -0,0 +1,43 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "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": {}, + "System.Runtime.CompilerServices.Unsafe/6.1.0": {} + } + }, + "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/net8.0/StgSharp.Common.AssemblyInfo.cs b/StgSharp.Common/obj/Debug/net8.0/StgSharp.Common.AssemblyInfo.cs index 5e596158..c3c36da8 100644 --- a/StgSharp.Common/obj/Debug/net8.0/StgSharp.Common.AssemblyInfo.cs +++ b/StgSharp.Common/obj/Debug/net8.0/StgSharp.Common.AssemblyInfo.cs @@ -14,7 +14,7 @@ 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+a6411e2f25010961d278c5bcb4a929e21b176bba")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba")] [assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Common")] [assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Common")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.AssemblyInfo.cs b/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.AssemblyInfo.cs index 5e596158..c3c36da8 100644 --- a/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.AssemblyInfo.cs +++ b/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.AssemblyInfo.cs @@ -14,7 +14,7 @@ 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+a6411e2f25010961d278c5bcb4a929e21b176bba")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba")] [assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Common")] [assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Common")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.sourcelink.json b/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.sourcelink.json index 6fa307cc..f5139c6a 100644 --- a/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.sourcelink.json +++ b/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.sourcelink.json @@ -1 +1 @@ -{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/a6411e2f25010961d278c5bcb4a929e21b176bba/*"}} \ No newline at end of file +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba/*"}} \ No newline at end of file diff --git a/StgSharp.Common/obj/x64/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/StgSharp.Common/obj/x64/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..2217181c --- /dev/null +++ b/StgSharp.Common/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/StgSharp.Common/obj/x64/Release/net8.0/StgSharp.Common.AssemblyInfo.cs b/StgSharp.Common/obj/x64/Release/net8.0/StgSharp.Common.AssemblyInfo.cs new file mode 100644 index 00000000..2541d8b9 --- /dev/null +++ b/StgSharp.Common/obj/x64/Release/net8.0/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+74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba")] +[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/net8.0/StgSharp.Common.csproj.FileListAbsolute.txt b/StgSharp.Common/obj/x64/Release/net8.0/StgSharp.Common.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..d6881354 --- /dev/null +++ b/StgSharp.Common/obj/x64/Release/net8.0/StgSharp.Common.csproj.FileListAbsolute.txt @@ -0,0 +1,11 @@ +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\bin\x64\Release\net8.0\StgSharp.Common.deps.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\bin\x64\Release\net8.0\StgSharp.Common.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\bin\x64\Release\net8.0\StgSharp.Common.xml +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Release\net8.0\StgSharp.Common.GeneratedMSBuildEditorConfig.editorconfig +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Release\net8.0\StgSharp.Common.AssemblyInfoInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Release\net8.0\StgSharp.Common.AssemblyInfo.cs +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Release\net8.0\StgSharp.Common.csproj.CoreCompileInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Release\net8.0\StgSharp.Common.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Release\net8.0\refint\StgSharp.Common.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Release\net8.0\StgSharp.Common.xml +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Release\net8.0\ref\StgSharp.Common.dll diff --git a/StgSharp.Model/STEP/Analyser/ExpSyntaxAnalyzer.Enum.cs b/StgSharp.Model/STEP/Analyser/ExpSyntaxAnalyzer.Enum.cs new file mode 100644 index 00000000..3fb51c66 --- /dev/null +++ b/StgSharp.Model/STEP/Analyser/ExpSyntaxAnalyzer.Enum.cs @@ -0,0 +1,68 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpSyntaxAnalyzer.Enum.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 StgSharp.Script.Express; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Model.Step +{ + internal partial class StepExpSyntaxAnalyzer + { + + private static string ParseStepEnumLiteral( string source ) + { + int length = source.Length; + ReadOnlySpan span = source.AsSpan(); + if( length > 2 && span[ 0 ] == '.' && span[ length - 1 ] == '.' ) { + return span.Slice( 1, length - 2 ).ToString(); + } + throw new ExpInvalidSyntaxException( $"\"{source}\" is not a valid enum syntax" ); + } + + private void TryAppendEnum( Token e ) + { + ExpSyntaxNode node = e.Value switch + { + ".T." => new ExpBoolNode( e, true, true ), + ".F." => new ExpBoolNode( e, false, true ), + ".U." => new ExpLogicValueNode( e, ExpLogic.Unknown, true ), + _ => ExpEnumLiteralNode.Create( e, ParseStepEnumLiteral ), + }; + _cache.PushOperand( node ); + } + + } +} diff --git a/StgSharp.Model/STEP/Items/StepBSplineSurface.cs b/StgSharp.Model/STEP/Items/StepBSplineSurface.cs new file mode 100644 index 00000000..38a9092b --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepBSplineSurface.cs @@ -0,0 +1,185 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepBSplineSurface.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; + +using StgSharp.Script.Express; + +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.Model.Step +{ + public enum StepBSplineSurfaceForm + { + + PLANE_SURF, + CYLINDRICAL_SURF, + CONICAL_SURF, + SPHERICAL_SURF, + TOROIDAL_SURF, + SURF_OF_REVOLUTION, + RULED_SURF, + GENERALISED_CONE, + QUADRIC_SURF, + SURF_OF_LINEAR_EXTRUSION, + UNSPECIFIED, + + } + + public class StepBSplineSurface : StepBoundedSurface, IExpConvertableFrom + { + + public const string CONICAL_SURF_TEXT = "CONICAL_SURF"; + public const string CYLINDRICAL_SURF_TEXT = "CYLINDRICAL_SURF"; + public const string GENERALISED_CONE_TEXT = "GENERALISED_CONE"; + public const string PLANE_SURF_TEXT = "PLANE_SURF"; + public const string QUADRIC_SURF_TEXT = "QUADRIC_SURF"; + public const string RULED_SURF_TEXT = "RULED_SURF"; + public const string SPHERICAL_SURF_TEXT = "SPHERICAL_SURF"; + public const string SURF_OF_LINEAR_EXTRUSION_TEXT = "SURF_OF_LINEAR_EXTRUSION"; + public const string SURF_OF_REVOLUTION_TEXT = "SURF_OF_REVOLUTION"; + public const string TOROIDAL_SURF_TEXT = "TOROIDAL_SURF"; + public const string UNSPECIFIED_TEXT = "UNSPECIFIED"; + + public StepBSplineSurface( StepModel model ) : base( model ) { } + + public bool UClosed { get; set; } + + public bool VClosed { get; set; } + + public bool SelfIntersections { get; set; } + + public int UDegree { get; set; } + + public int VDegree { get; set; } + + public int UUpper => ControlPointsList.Count - 1; + + public int VUpper => ControlPointsList[ 0 ].Count - 1; + + public List> ControlPointsList { get; set; } + = new List>(); + + public StepBSplineSurfaceForm SurfaceForm { get; set; } + + public static StepBSplineSurface CreateFromSyntax( StepModel binder, ExpSyntaxNode syntax ) + { + ExpNodePresidentEnumerator enumerator = syntax.ToPresidentEnumerator(); + enumerator.AssertEnumeratorCount( 7 ); + StepBSplineSurface ret = new StepBSplineSurface( binder ); + + ret.UDegree = ( enumerator[ 0 ] as ExpIntNode ).Value; + ret.VDegree = ( enumerator[ 1 ] as ExpIntNode ).Value; + + ExpNodePresidentEnumerator pointList = enumerator[ 2 ].TupleToPresidentEnumerator(); + pointList.AssertEnumeratorCount( 2, int.MaxValue ); + for( int i = 0; i < pointList.Count; i++ ) + { + ExpNodePresidentEnumerator points = pointList[ i ].TupleToPresidentEnumerator(); + points.AssertEnumeratorCount( 2, int.MaxValue ); + List pList = new List( points.Count ); + CollectionsMarshal.SetCount( pList, points.Count ); + Span ls = CollectionsMarshal.AsSpan( pList ); + Span aspan = points.AsSpan(); + for( int j = 0; j < points.Count; j++ ) + { + StepCartesianPoint p = binder[ aspan[ i ] as StepEntityInstanceNode ] as StepCartesianPoint; + ls[ j ] = p; + } + ret.ControlPointsList.Add( pList ); + } + + ret.SurfaceForm = GetSurfaceForm( enumerator[ 3 ].CodeConvertTemplate ); + ret.UClosed = ( enumerator[ 4 ] as ExpBoolNode ).Value; + ret.VClosed = ( enumerator[ 5 ] as ExpBoolNode ).Value; + ret.SelfIntersections = ( enumerator[ 6 ] as ExpBoolNode ).Value; + return ret; + } + + public void FromInstance( StepBSplineSurface entity ) + { + base.FromInstance( entity ); + UClosed = entity.UClosed; + VClosed = entity.VClosed; + UDegree = entity.UDegree; + VDegree = entity.VDegree; + ControlPointsList.Clear(); + foreach( List list in entity.ControlPointsList ) { + ControlPointsList.Add( new List( list ) ); + } + SurfaceForm = entity.SurfaceForm; + } + + protected static StepBSplineSurfaceForm GetSurfaceForm( string literal ) + { + return literal switch + { + CONICAL_SURF_TEXT => StepBSplineSurfaceForm.PLANE_SURF, + CYLINDRICAL_SURF_TEXT => StepBSplineSurfaceForm.CYLINDRICAL_SURF, + GENERALISED_CONE_TEXT => StepBSplineSurfaceForm.CONICAL_SURF, + PLANE_SURF_TEXT => StepBSplineSurfaceForm.SPHERICAL_SURF, + QUADRIC_SURF_TEXT => StepBSplineSurfaceForm.TOROIDAL_SURF, + RULED_SURF_TEXT => StepBSplineSurfaceForm.SURF_OF_REVOLUTION, + SPHERICAL_SURF_TEXT => StepBSplineSurfaceForm.RULED_SURF, + SURF_OF_LINEAR_EXTRUSION_TEXT => StepBSplineSurfaceForm.GENERALISED_CONE, + SURF_OF_REVOLUTION_TEXT => StepBSplineSurfaceForm.QUADRIC_SURF, + TOROIDAL_SURF_TEXT => StepBSplineSurfaceForm.SURF_OF_LINEAR_EXTRUSION, + UNSPECIFIED_TEXT => StepBSplineSurfaceForm.UNSPECIFIED, + _ => StepBSplineSurfaceForm.UNSPECIFIED, + }; + } + + protected static string GetSurfaceFormString( StepBSplineSurfaceForm form ) + { + return form switch + { + StepBSplineSurfaceForm.PLANE_SURF => CONICAL_SURF_TEXT, + StepBSplineSurfaceForm.CYLINDRICAL_SURF => CYLINDRICAL_SURF_TEXT, + StepBSplineSurfaceForm.CONICAL_SURF => GENERALISED_CONE_TEXT, + StepBSplineSurfaceForm.SPHERICAL_SURF => PLANE_SURF_TEXT, + StepBSplineSurfaceForm.TOROIDAL_SURF => QUADRIC_SURF_TEXT, + StepBSplineSurfaceForm.SURF_OF_REVOLUTION => RULED_SURF_TEXT, + StepBSplineSurfaceForm.RULED_SURF => SPHERICAL_SURF_TEXT, + StepBSplineSurfaceForm.GENERALISED_CONE => SURF_OF_LINEAR_EXTRUSION_TEXT, + StepBSplineSurfaceForm.QUADRIC_SURF => SURF_OF_REVOLUTION_TEXT, + StepBSplineSurfaceForm.SURF_OF_LINEAR_EXTRUSION => TOROIDAL_SURF_TEXT, + StepBSplineSurfaceForm.UNSPECIFIED => UNSPECIFIED_TEXT, + _ => UNSPECIFIED_TEXT + }; + } + + } +} \ No newline at end of file diff --git a/StgSharp.Model/STEP/Items/StepBoundedSurface.cs b/StgSharp.Model/STEP/Items/StepBoundedSurface.cs new file mode 100644 index 00000000..a2ed60e0 --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepBoundedSurface.cs @@ -0,0 +1,54 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepBoundedSurface.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.Express; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Model.Step +{ + public class StepBoundedSurface : StepSurface, IExpConvertableFrom + { + + public StepBoundedSurface( StepModel model ) : base( model ) { } + + public override StepItemType ItemType => StepItemType.BoundedSurface; + + public void FromInstance( StepBoundedSurface entity ) + { + base.FromInstance( entity ); + } + + } +} diff --git a/StgSharp.Model/STEP/Items/StepBoundedSurfaceCurve.cs b/StgSharp.Model/STEP/Items/StepBoundedSurfaceCurve.cs new file mode 100644 index 00000000..ea80dbb4 --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepBoundedSurfaceCurve.cs @@ -0,0 +1,59 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepBoundedSurfaceCurve.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.Express; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Model.Step +{ + internal class StepBoundedSurfaceCurve : StepBoundedCurve, IExpConvertableFrom + { + + public StepBoundedSurfaceCurve( StepModel model ) : base( model ) { } + + public StepCurve Parent { get; set; } = null!; + + public void FromInstance( StepSurfaceCurve entity ) + { + base.FromInstance( entity ); + } + + public void FromInstance( StepBoundedSurfaceCurve entity ) + { + base.FromInstance( entity ); + } + + } +} diff --git a/StgSharp.Model/STEP/Items/StepPcurveOrSurface.cs b/StgSharp.Model/STEP/Items/StepPcurveOrSurface.cs new file mode 100644 index 00000000..975ac859 --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepPcurveOrSurface.cs @@ -0,0 +1,52 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepPcurveOrSurface.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.Express; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Model.Step.Items +{ + public class StepPCurveOrSurface : StepGeometricRepresentationItem, IExpConvertableFrom + { + + public StepPCurveOrSurface( StepModel model ) : base( model ) { } + + public void FromInstance( StepPCurveOrSurface entity ) + { + base.FromInstance( entity ); + } + + } +} diff --git a/StgSharp.Model/STEP/Items/StepSurfaceCurve.cs b/StgSharp.Model/STEP/Items/StepSurfaceCurve.cs new file mode 100644 index 00000000..73528f24 --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepSurfaceCurve.cs @@ -0,0 +1,54 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepSurfaceCurve.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.Express; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Model.Step +{ + public class StepSurfaceCurve : StepCurve, IExpConvertableFrom + { + + public StepSurfaceCurve( StepModel model ) : base( model ) { } + + public StepCurve Curve3D { get; set; } + + public void FromInstance( StepSurfaceCurve entity ) + { + throw new NotImplementedException(); + } + + } +} diff --git a/StgSharp.Model/STEP/StepEntityLabel.cs b/StgSharp.Model/STEP/StepEntityLabel.cs new file mode 100644 index 00000000..44c201c6 --- /dev/null +++ b/StgSharp.Model/STEP/StepEntityLabel.cs @@ -0,0 +1,61 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepEntityLabel.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.PipeLine; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Model.Step +{ + public record class StepEntityLabel : PipelineNodeLabel + { + public StepEntityLabel( int id ) + { + Id = id; + } + + public int Id { get; init; } + + public override int ComputeHashCode() + { + return Id; + } + + public override string ToString() + { + return $"StepEntityLabel: {Id}"; + } + } +} diff --git a/StgSharp.Model/STEP/StepEntityUnsupportedException.cs b/StgSharp.Model/STEP/StepEntityUnsupportedException.cs new file mode 100644 index 00000000..d48787a6 --- /dev/null +++ b/StgSharp.Model/STEP/StepEntityUnsupportedException.cs @@ -0,0 +1,40 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepEntityUnsupportedException.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.Model.Step +{ + internal class StepEntityUnsupportedException : Exception { } +} diff --git a/StgSharp.Model/STEP/StepUncertainEntity.Parse.cs b/StgSharp.Model/STEP/StepUncertainEntity.Parse.cs new file mode 100644 index 00000000..3625be4a --- /dev/null +++ b/StgSharp.Model/STEP/StepUncertainEntity.Parse.cs @@ -0,0 +1,83 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepUncertainElement.Parse.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.Express; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Model.Step +{ + public partial class StepUninitializedEntity + { + + private static StepRepresentationItem ConvertSimpleEntity( + StepModel context, + ExpFunctionCallingNode calling ) + { + string name = calling.FunctionCaller.Name; + return name switch + { + ExpressStepUtil.AdvancedFaceText => StepAdvancedFace.FromSyntax( + context, calling.Right ), + ExpressStepUtil.Axis2Placement2DText => StepAxis2Placement2D.FromSyntax( + context, calling.Right ), + ExpressStepUtil.Axis2Placement3DText => StepAxis2Placement3D.FromSyntax( + context, calling.Right ), + ExpressStepUtil.BSplineCurveWithKnotsText => StepBSplineCurveWithKnots.FromSyntax( + context, calling.Right ), + ExpressStepUtil.CartesianPointText => StepCartesianPoint.FromSyntax( + context, calling.Right ), + ExpressStepUtil.CircleText => StepCircle.FromSyntax( context, calling.Right ), + ExpressStepUtil.CylindricalSurfaceText => StepCylindricalSurface.FromSyntax( + context, calling.Right ), + ExpressStepUtil.DirectionText => StepDirection.FromSyntax( context, calling.Right ), + ExpressStepUtil.EdgeCurveText => StepEdgeCurve.FromSyntax( context, calling.Right ), + ExpressStepUtil.EdgeLoopText => StepEdgeLoop.FromSyntax( context, calling.Right ), + ExpressStepUtil.EllipseText => StepEllipse.FromSyntax( context, calling.Right ), + ExpressStepUtil.FaceBoundText => StepFaceBound.FromSyntax( context, calling.Right ), + ExpressStepUtil.FaceOuterBoundText => StepFaceOuterBound.FromSyntax( + context, calling.Right ), + ExpressStepUtil.LineText => StepLine.FromSyntax( context, calling.Right ), + ExpressStepUtil.OrientedEdgeText => StepOrientedEdge.FromSyntax( + context, calling.Right ), + ExpressStepUtil.PlaneText => StepPlane.FromSyntax( context, calling.Right ), + ExpressStepUtil.VectorText => StepVector.FromSyntax( context, calling.Right ), + ExpressStepUtil.VertexPointText => StepVertexPoint.FromSyntax( + context, calling.Right ), + _ => throw new StepEntityUnsupportedException() + }; + } + + } +} diff --git a/StgSharp.Model/STEP/StepUncertainEntity.cs b/StgSharp.Model/STEP/StepUncertainEntity.cs new file mode 100644 index 00000000..eb29b2b7 --- /dev/null +++ b/StgSharp.Model/STEP/StepUncertainEntity.cs @@ -0,0 +1,238 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepUncertainEntity.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 Microsoft.CodeAnalysis.Operations; + +using StgSharp; + +using StgSharp.Model.Step; +using StgSharp.PipeLine; +using StgSharp.Script; + +using StgSharp.Script.Express; + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Dynamic; +using System.Reflection.Metadata; +using System.Security.AccessControl; +using System.Security.Cryptography; +using System.Text; +using System.Threading.Tasks; +using System.Transactions; +using System.Xml.Linq; + +namespace StgSharp.Model.Step +{ + public partial class StepUninitializedEntity : StepEntityBase, IConvertableToPipelineNode + { + + internal const string InName = "in", OutName = "out"; + + private ExpSyntaxNode _data; + + internal StepUninitializedEntity( StepModel model, int id ) + { + Context = model; + Id = id; + } + + internal StepUninitializedEntity( StepModel model, StepEntityLabel label ) + { + Context = model; + Label = label; + } + + internal StepUninitializedEntity( + StepModel model, + int id, + ExpSyntaxNode initialization, + IEnumerable dependency ) + { + Context = model; + Id = id; + _data = initialization; + if( dependency == null ) + { + Dependencies = []; + } else + { + Dependencies = dependency; + } + } + + public override StepItemType ItemType => StepItemType.Unknown; + + internal static HashSet UnsupportedItemTypes { get; } = new HashSet(); + + internal StepEntityBase? ConvertToAccurate() + { + /* + StringBuilder builder = new StringBuilder(); + if( Dependencies is null || _data is null ) + { + builder.Append( "---------------------------" ); + builder.Append( "************************" ); + Console.WriteLine( + $"Building entity {Id} from thread {Environment.CurrentManagedThreadId} with dependency:{builder.ToString()} " ); + } else + { + foreach( int item in Dependencies ) { + builder.Append( $"{item}," ); + } + } + return null; + /**/ + if( _data is ExpFunctionCallingNode initNode ) + { + string name = initNode.FunctionCaller.Name; + StepEntityBase? entity = ConvertSimpleEntity( Context, initNode ); + if( entity is null ) + { + UnsupportedItemTypes.Add( name ); + return null; + } + return entity; + } else if( _data is StepComplexEntityNode complex ) + { + /**/ + ExpNodeTempEnumerator enumerator = new ExpNodeTempEnumerator( complex.Right, true ); + StepRepresentationItem entity = null!; + while( enumerator.MoveNext() ) + { + if( enumerator.Current is not ExpFunctionCallingNode init ) { + throw new InvalidCastException(); + } + StepRepresentationItem? e = ConvertSimpleEntity( Context, init ); + if( e is null ) + { + //throw new NotImplementedException( $"Unknown entity type in sequence {Id}" ); + return null; + } + if( entity is null ) + { + entity = e; + } else + { + entity = StepDataParser.Implement( entity, e ); + } + } + return entity; + /**/ + return null; + } else + { + throw new ExpInvalidSyntaxException( "Name of entity is required." ); + } + } + + internal void FromSequence( StepEntityDefineSequence sequence ) + { + ExpSyntaxNode node = sequence.Expression; + if( node is not ExpBinaryOperatorNode assign ) { + throw new ExpInvalidSyntaxException( "Not an assign expression " ); + } + StepEntityInstanceNode? idNode = assign.Left as StepEntityInstanceNode; + if( idNode!.Id != this.Id ) { + throw new InvalidOperationException(); + } + FromSequenceUnsafe( sequence ); + } + + internal void FromSequenceUnsafe( StepEntityDefineSequence sequence ) + { + ExpSyntaxNode assign = ( sequence.Expression as ExpBinaryOperatorNode )!; + ExpSyntaxNode initNode; + if( ( assign.Right is ExpFunctionCallingNode f ) ) + { + initNode = assign.Right; + ExpEntityTypeName = f.FunctionCaller.Name; + } else if( ( assign.Right is StepComplexEntityNode c ) ) + { + initNode = assign.Right; + ExpNodeTempEnumerator enumerator = new ExpNodeTempEnumerator( c.Right, false ); + StringBuilder sb = new StringBuilder(); + sb.Append( "Complex entity initialization: " ); + int count = 0; + while( enumerator.MoveNext() ) + { + if( count > 0 ) { + sb.Append( " <-> " ); + } + f = ( enumerator.Current as ExpFunctionCallingNode )!; + sb.Append( $"{f.FunctionCaller.Name}" ); + count++; + } + ExpEntityTypeName = sb.ToString(); + } else + { + throw new ExpInvalidSyntaxException( + "Entity init or complex entity define is required." ); + } + if( _data is not null ) { + return; + } + _data = initNode!; + Dependencies = sequence.Dependencies ?? []; + } + + void IConvertableToPipelineNode.NodeMain( + in Dictionary input, + in Dictionary output ) + { + try + { + StepEntityBase? entity = ConvertToAccurate(); + if( entity is not null ) + { + entity.FromInstance( this ); + Context.ReplaceEntity( this, entity ); + } + } + catch( StepEntityUnsupportedException ) { } + catch( Exception ex ) + { + throw new Exception( $"Step decoder crashed when building entity {Id}", ex ); + } + + //Context.ReplaceEntity( this, entity ); + PipelineNodeOutPort.SkipAll( output ); + } + + IEnumerable IConvertableToPipelineNode.InputPortName => [InName]; + + PipelineNodeOperation IConvertableToPipelineNode.Operation => ( this as IConvertableToPipelineNode ).NodeMain; + + IEnumerable IConvertableToPipelineNode.OutputPortName => [OutName]; + + } +} \ No newline at end of file diff --git a/StgSharp.Model/STEP/StepUnsupportedEntity.cs b/StgSharp.Model/STEP/StepUnsupportedEntity.cs new file mode 100644 index 00000000..49f4d046 --- /dev/null +++ b/StgSharp.Model/STEP/StepUnsupportedEntity.cs @@ -0,0 +1,57 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepUnsupportedEntity.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.Express; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Model.Step +{ + public class StepUnsupportedEntity : StepEntityBase + { + + private ExpSyntaxNode _initSequence; + + public StepUnsupportedEntity( StepModel model, int id, string name, ExpSyntaxNode sequence ) + { + Id = id; + Name = name; + _initSequence = sequence; + Context = model; + } + + public override StepItemType ItemType => StepItemType.Unknown; + + } +} diff --git a/StgSharp.Model/StgSharp.Model.csproj b/StgSharp.Model/StgSharp.Model.csproj index 4147ac04..bf6032ec 100644 --- a/StgSharp.Model/StgSharp.Model.csproj +++ b/StgSharp.Model/StgSharp.Model.csproj @@ -5,6 +5,7 @@ enable preview AnyCPU;x64 + True diff --git a/StgSharp.Model/bin/x64/Release/net8.0/StgSharp.Model.deps.json b/StgSharp.Model/bin/x64/Release/net8.0/StgSharp.Model.deps.json new file mode 100644 index 00000000..b505019f --- /dev/null +++ b/StgSharp.Model/bin/x64/Release/net8.0/StgSharp.Model.deps.json @@ -0,0 +1,244 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "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": { + "runtime": { + "lib/net8.0/CommunityToolkit.HighPerformance.dll": { + "assemblyVersion": "8.4.0.0", + "fileVersion": "8.4.0.1" + } + } + }, + "Microsoft.CodeAnalysis.Analyzers/3.11.0": {}, + "Microsoft.CodeAnalysis.Common/4.13.0": { + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.11.0", + "System.Collections.Immutable": "8.0.0", + "System.Reflection.Metadata": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.CodeAnalysis.dll": { + "assemblyVersion": "4.13.0.0", + "fileVersion": "4.1300.25.12011" + } + }, + "resources": { + "lib/net8.0/cs/Microsoft.CodeAnalysis.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/de/Microsoft.CodeAnalysis.resources.dll": { + "locale": "de" + }, + "lib/net8.0/es/Microsoft.CodeAnalysis.resources.dll": { + "locale": "es" + }, + "lib/net8.0/fr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/it/Microsoft.CodeAnalysis.resources.dll": { + "locale": "it" + }, + "lib/net8.0/ja/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ko/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/pl/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pt-BR/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/ru/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/tr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.CSharp/4.13.0": { + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.11.0", + "Microsoft.CodeAnalysis.Common": "4.13.0", + "System.Collections.Immutable": "8.0.0", + "System.Reflection.Metadata": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.CodeAnalysis.CSharp.dll": { + "assemblyVersion": "4.13.0.0", + "fileVersion": "4.1300.25.12011" + } + }, + "resources": { + "lib/net8.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "de" + }, + "lib/net8.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "es" + }, + "lib/net8.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "it" + }, + "lib/net8.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CSharp/4.7.0": {}, + "System.Collections.Immutable/8.0.0": {}, + "System.Reflection.Metadata/8.0.0": { + "dependencies": { + "System.Collections.Immutable": "8.0.0" + } + }, + "System.Runtime.CompilerServices.Unsafe/6.1.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.Script/1.0.0": { + "dependencies": { + "CommunityToolkit.HighPerformance": "8.4.0", + "Microsoft.CodeAnalysis.CSharp": "4.13.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.CodeAnalysis.Analyzers/3.11.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-v/EW3UE8/lbEYHoC2Qq7AR/DnmvpgdtAMndfQNmpuIMx/Mto8L5JnuCfdBYtgvalQOtfNCnxFejxuRrryvUTsg==", + "path": "microsoft.codeanalysis.analyzers/3.11.0", + "hashPath": "microsoft.codeanalysis.analyzers.3.11.0.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.Common/4.13.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-T8nRl4mAUY4mhdYM4U2ra2vP2EL+ol8Yqwo0gwC/V55vmlXq9NxdIkZJynTpTL1uX/jHijJ90AeOEx4lf7OwzQ==", + "path": "microsoft.codeanalysis.common/4.13.0", + "hashPath": "microsoft.codeanalysis.common.4.13.0.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.CSharp/4.13.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-BsH7Vijbj9IL7Fj4k/ysZSVyLGFqr75wmdFGwCKWJvSjnA1xwPaQ3hkB2BQdHOt5CpEYA6Q0I6Oo5sDTDHqHsg==", + "path": "microsoft.codeanalysis.csharp/4.13.0", + "hashPath": "microsoft.codeanalysis.csharp.4.13.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.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.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.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/net8.0/StgSharp.Model.AssemblyInfo.cs b/StgSharp.Model/obj/Debug/net8.0/StgSharp.Model.AssemblyInfo.cs index ec6d5c05..ecb9214b 100644 --- a/StgSharp.Model/obj/Debug/net8.0/StgSharp.Model.AssemblyInfo.cs +++ b/StgSharp.Model/obj/Debug/net8.0/StgSharp.Model.AssemblyInfo.cs @@ -14,7 +14,7 @@ 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+a6411e2f25010961d278c5bcb4a929e21b176bba")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba")] [assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Model")] [assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Model")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.AssemblyInfo.cs b/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.AssemblyInfo.cs index ec6d5c05..ecb9214b 100644 --- a/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.AssemblyInfo.cs +++ b/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.AssemblyInfo.cs @@ -14,7 +14,7 @@ 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+a6411e2f25010961d278c5bcb4a929e21b176bba")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba")] [assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Model")] [assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Model")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.sourcelink.json b/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.sourcelink.json index 6fa307cc..f5139c6a 100644 --- a/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.sourcelink.json +++ b/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.sourcelink.json @@ -1 +1 @@ -{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/a6411e2f25010961d278c5bcb4a929e21b176bba/*"}} \ No newline at end of file +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba/*"}} \ No newline at end of file diff --git a/StgSharp.Model/obj/x64/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/StgSharp.Model/obj/x64/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..2217181c --- /dev/null +++ b/StgSharp.Model/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/StgSharp.Model/obj/x64/Release/net8.0/StgSharp.Model.AssemblyInfo.cs b/StgSharp.Model/obj/x64/Release/net8.0/StgSharp.Model.AssemblyInfo.cs new file mode 100644 index 00000000..b4c1c687 --- /dev/null +++ b/StgSharp.Model/obj/x64/Release/net8.0/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+74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba")] +[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/Release/net8.0/StgSharp.Model.csproj.FileListAbsolute.txt b/StgSharp.Model/obj/x64/Release/net8.0/StgSharp.Model.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..77d80d84 --- /dev/null +++ b/StgSharp.Model/obj/x64/Release/net8.0/StgSharp.Model.csproj.FileListAbsolute.txt @@ -0,0 +1,18 @@ +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\bin\x64\Release\net8.0\StgSharp.Model.deps.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\bin\x64\Release\net8.0\StgSharp.Model.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\bin\x64\Release\net8.0\StgSharp.Model.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\bin\x64\Release\net8.0\StgSharp.Common.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\bin\x64\Release\net8.0\StgSharp.Script.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\bin\x64\Release\net8.0\StgSharp.Common.xml +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\bin\x64\Release\net8.0\StgSharp.Script.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Release\net8.0\StgSharp.Model.csproj.AssemblyReference.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Release\net8.0\StgSharp.Model.GeneratedMSBuildEditorConfig.editorconfig +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Release\net8.0\StgSharp.Model.AssemblyInfoInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Release\net8.0\StgSharp.Model.AssemblyInfo.cs +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Release\net8.0\StgSharp.Model.csproj.CoreCompileInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Release\net8.0\StgSharp.Model.sourcelink.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Release\net8.0\StgSharp.BC99943D.Up2Date +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Release\net8.0\StgSharp.Model.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Release\net8.0\refint\StgSharp.Model.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Release\net8.0\StgSharp.Model.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Release\net8.0\ref\StgSharp.Model.dll diff --git a/StgSharp.Model/obj/x64/Release/net8.0/StgSharp.Model.sourcelink.json b/StgSharp.Model/obj/x64/Release/net8.0/StgSharp.Model.sourcelink.json new file mode 100644 index 00000000..f5139c6a --- /dev/null +++ b/StgSharp.Model/obj/x64/Release/net8.0/StgSharp.Model.sourcelink.json @@ -0,0 +1 @@ +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba/*"}} \ No newline at end of file diff --git a/StgSharp.Script/Common/CodeLineHelper.cs b/StgSharp.Script/Common/CodeLineHelper.cs index 49309174..676fe6c2 100644 --- a/StgSharp.Script/Common/CodeLineHelper.cs +++ b/StgSharp.Script/Common/CodeLineHelper.cs @@ -51,8 +51,7 @@ namespace StgSharp.Script ReadOnlySpan subSpan = sourceSpan.Slice( startIndex ); int start = 0; - while( start < subSpan.Length && char.IsWhiteSpace( - subSpan[ start ] ) ) { + while( start < subSpan.Length && char.IsWhiteSpace( subSpan[ start ] ) ) { start++; } int end = subSpan.Length - 1; @@ -67,10 +66,7 @@ namespace StgSharp.Script return new string( subSpan.Slice( start, finalLength ) ); } - public static string SliceAndTrim( - this string line, - int startIndex, - int length ) + public static string SliceAndTrim( this string line, int startIndex, int length ) { if( line == null ) { throw new ArgumentNullException( nameof( line ) ); @@ -88,8 +84,7 @@ namespace StgSharp.Script ReadOnlySpan subSpan = sourceSpan.Slice( startIndex, length ); int start = 0; - while( start < subSpan.Length && char.IsWhiteSpace( - subSpan[ start ] ) ) { + while( start < subSpan.Length && char.IsWhiteSpace( subSpan[ start ] ) ) { start++; } int end = subSpan.Length - 1; diff --git a/StgSharp.Script/Common/CompileStack.cs b/StgSharp.Script/Common/CompileStack.cs index d5a9252f..73e20404 100644 --- a/StgSharp.Script/Common/CompileStack.cs +++ b/StgSharp.Script/Common/CompileStack.cs @@ -28,6 +28,8 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- +using StgSharp.Collections; + using System; using System.Collections.Generic; using System.Data; @@ -49,9 +51,10 @@ namespace StgSharp.Script private Token[] _tokenArray = new Token[4]; private int _nodeCount,_tokenCount, _operatorCount; - private Stack _depthStack = new Stack(); - private Stack _isNode = new Stack(); + private RandomAccessibleStack _isNode = new RandomAccessibleStack( + 8 ); + private Stack _depthStack = new Stack(); private Stack> _statementCache = new Stack>(); private TNode _lastNode; @@ -97,6 +100,43 @@ namespace StgSharp.Script Stack statementsInDepth = _statementCache.Pop(); } + public bool GetOperandAt( Index i, out TNode operandNode, out Token operandToken ) + { + OperandIndex index = _isNode[ i ]; + if( index.IsNode ) + { + operandNode = _nodeArray[ index.Index ]; + operandToken = Token.Empty; + return true; + } else + { + operandToken = _tokenArray[ index.Index ]; + operandNode = default!; + return false; + } + } + + public bool GetOperandAt( + CompileDepthMark depth, + Index i, + out Token operandToken, + out TNode operandNode ) + { + OperandIndex index = _isNode[ i ]; + _depthStack.Contains( depth ); + if( index.IsNode ) + { + operandNode = _nodeArray[ index.Index ]; + operandToken = Token.Empty; + return true; + } else + { + operandToken = _tokenArray[ index.Index ]; + operandNode = default!; + return false; + } + } + public CompileDepthMark IncreaseDepth( int usage ) { CompileDepthMark mark = @@ -131,7 +171,7 @@ namespace StgSharp.Script n = TNode.Empty; return false; } - if( _isNode.Pop() ) + if( _isNode.Pop().IsNode ) { t = Token.Empty; n = _nodeArray[ _nodeCount - 1 ]; @@ -160,7 +200,7 @@ namespace StgSharp.Script n = TNode.Empty; return false; } - if( _isNode.Pop() ) + if( _isNode.Pop().IsNode ) { t = Token.Empty; n = _nodeArray[ --_nodeCount ]; @@ -189,8 +229,8 @@ namespace StgSharp.Script Array.Resize( ref _nodeArray, _nodeArray.Length * 2 ); } _nodeArray[ _nodeCount ] = node; + _isNode.Push( new( true, _nodeCount ) ); _nodeCount++; - _isNode.Push( true ); IsLastAddedOperator = false; } @@ -200,8 +240,8 @@ namespace StgSharp.Script Array.Resize( ref _tokenArray, _tokenArray.Length * 2 ); } _tokenArray[ _tokenCount ] = token; + _isNode.Push( new( false, _tokenCount ) ); _tokenCount++; - _isNode.Push( false ); IsLastAddedOperator = false; } @@ -229,7 +269,7 @@ namespace StgSharp.Script isNode = false; return false; } - if( _isNode.Pop() ) + if( _isNode.Pop().IsNode ) { t = Token.Empty; n = _nodeArray[ _nodeCount - 1 ]; @@ -264,7 +304,7 @@ namespace StgSharp.Script isNode = false; return false; } - if( _isNode.Pop() ) + if( _isNode.Pop().IsNode ) { t = Token.Empty; n = _nodeArray[ --_nodeCount ]; @@ -290,5 +330,7 @@ namespace StgSharp.Script return false; } + private record struct OperandIndex( bool IsNode, int Index ); + } } diff --git a/StgSharp.Script/Common/IScriptSourceProvider.cs b/StgSharp.Script/Common/IScriptSourceProvider.cs index dfe2bcd4..380d5ee7 100644 --- a/StgSharp.Script/Common/IScriptSourceProvider.cs +++ b/StgSharp.Script/Common/IScriptSourceProvider.cs @@ -37,15 +37,9 @@ namespace StgSharp.Script public interface IScriptSourceProvider { - bool IsEmpty - { - get; - } + bool IsEmpty { get; } - int Location - { - get; - } + int Location { get; } void EndWriting(); @@ -54,10 +48,14 @@ namespace StgSharp.Script string ReadLine( out int position ); /// - /// Return part of current provider. + /// Return part of current provider. /// - /// Count of lines to be sliced - /// + /// + /// Count of lines to be sliced + /// + /// + /// + /// public IScriptSourceProvider Slice( int location, int count ); } diff --git a/StgSharp.Script/Common/ITypeSource.cs b/StgSharp.Script/Common/ITypeSource.cs index ea1daaba..89c57014 100644 --- a/StgSharp.Script/Common/ITypeSource.cs +++ b/StgSharp.Script/Common/ITypeSource.cs @@ -36,8 +36,7 @@ using System.Threading.Tasks; namespace StgSharp.Script { - public interface ITypeSource - where TConvert: ITypeSource + public interface ITypeSource where TConvert: ITypeSource { bool IsConvertable( TConvert targetType ); diff --git a/StgSharp.Script/Common/ScriptSourceTransmitter.cs b/StgSharp.Script/Common/ScriptSourceTransmitter.cs index efa9287c..7a4007eb 100644 --- a/StgSharp.Script/Common/ScriptSourceTransmitter.cs +++ b/StgSharp.Script/Common/ScriptSourceTransmitter.cs @@ -38,9 +38,9 @@ using System.Text.RegularExpressions; namespace StgSharp.Script { /// - /// Transmit a continuous part of script code to interpreter or compiler. This transmitter is - /// designed for single-thread-write and single-thread read. Any multi thread operation will - /// cause undefined behaviour. + /// Transmit a continuous part of script code to interpreter or compiler. This transmitter is + /// designed for single-thread-write and single-thread read. Any multi thread operation will + /// cause undefined behaviour. /// public class ScriptSourceTransmitter : IScriptSourceProvider { @@ -73,10 +73,7 @@ namespace StgSharp.Script _index = 0; } - public ScriptSourceTransmitter( - string endMark, - int start, - int capacity ) + public ScriptSourceTransmitter( string endMark, int start, int capacity ) { _cache = new List( capacity ); _completeMark = endMark; @@ -85,8 +82,7 @@ namespace StgSharp.Script } public bool IsEmpty => _isWriting ? - ( _cache.Count == 0 ) : ( _buffer.Length == 0 ) || ( _index >= - _buffer.Length ); + ( _cache.Count == 0 ) : ( _buffer.Length == 0 ) || ( _index >= _buffer.Length ); public bool IsFrozen => !_isWriting; @@ -107,8 +103,7 @@ namespace StgSharp.Script public string ReadLine() { if( _isWriting ) { - throw new InvalidOperationException( - "Cannot read before all writing operation." ); + throw new InvalidOperationException( "Cannot read before all writing operation." ); } if( _index >= _buffer.Length ) { return string.Empty; @@ -121,10 +116,10 @@ namespace StgSharp.Script public string ReadLine( out int position ) { if( _isWriting ) { - throw new InvalidOperationException( - "Cannot read before all writing operation." ); + throw new InvalidOperationException( "Cannot read before all writing operation." ); } - if( _index >= _buffer.Length ) { + if( _index >= _buffer.Length ) + { position = -1; return string.Empty; } @@ -148,7 +143,8 @@ namespace StgSharp.Script if( !_isWriting ) { return; } - if( string.Equals( _completeMark, line ) ) { + if( string.Equals( _completeMark, line ) ) + { EndWriting(); return; } diff --git a/StgSharp.Script/Express/Builtin/ExpLogic.cs b/StgSharp.Script/Express/Builtin/ExpLogic.cs index 7f102257..fa4a64ce 100644 --- a/StgSharp.Script/Express/Builtin/ExpLogic.cs +++ b/StgSharp.Script/Express/Builtin/ExpLogic.cs @@ -30,6 +30,7 @@ //----------------------------------------------------------------------- using System; using System.Collections.Generic; +using System.Runtime.CompilerServices; using System.Text; namespace StgSharp.Script.Express @@ -46,13 +47,10 @@ namespace StgSharp.Script.Express public struct ExpLogic { - public static readonly ExpLogic False = new ExpLogic( - ExpLogicValue.False ); + public static readonly ExpLogic False = new ExpLogic( ExpLogicValue.False ); - public static readonly ExpLogic True = new ExpLogic( - ExpLogicValue.True ); - public static readonly ExpLogic Unknown = new ExpLogic( - ExpLogicValue.Unknown ); + public static readonly ExpLogic True = new ExpLogic( ExpLogicValue.True ); + public static readonly ExpLogic Unknown = new ExpLogic( ExpLogicValue.Unknown ); private readonly ExpLogicValue _value; @@ -67,13 +65,18 @@ namespace StgSharp.Script.Express public bool IsUnknown => _value == ExpLogicValue.Unknown; + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public bool ToBoolean() + { + return _value == ExpLogicValue.True; + } + public override string ToString() => _value.ToString(); - public static bool TryParse( - ReadOnlySpan value, - out ExpLogic result ) + public static bool TryParse( ReadOnlySpan value, out ExpLogic result ) { - if( Enum.TryParse( value, out ExpLogicValue e ) ) { + if( Enum.TryParse( value, out ExpLogicValue e ) ) + { result = new ExpLogic( e ); return true; } diff --git a/StgSharp.Script/Express/ExpAstNode/ExpBinaryOperatorNode.cs b/StgSharp.Script/Express/ExpAstNode/ExpBinaryOperatorNode.cs index 5d753d20..4a615615 100644 --- a/StgSharp.Script/Express/ExpAstNode/ExpBinaryOperatorNode.cs +++ b/StgSharp.Script/Express/ExpAstNode/ExpBinaryOperatorNode.cs @@ -73,8 +73,8 @@ namespace StgSharp.Script.Express left.EqualityTypeConvert.Name ); } bool isFloat = - ( left._nodeFlag | ExpNodeFlag.BuiltinType_Real ) == 0 || ( right._nodeFlag | ExpNodeFlag.BuiltinType_Real ) == - 0; + ( left._nodeFlag | ExpNodeFlag.BuiltinType_Real ) == 0 || + ( right._nodeFlag | ExpNodeFlag.BuiltinType_Real ) == 0; return new ExpBinaryOperatorNode( source, left, right ) { _returnType = isFloat ? ExpressCompile.ExpReal : ExpressCompile.ExpInt, @@ -158,8 +158,8 @@ namespace StgSharp.Script.Express left.EqualityTypeConvert.Name ); } bool isFloat = - ( left._nodeFlag | ExpNodeFlag.BuiltinType_Real ) == 0 || ( right._nodeFlag | ExpNodeFlag.BuiltinType_Real ) == - 0; + ( left._nodeFlag | ExpNodeFlag.BuiltinType_Real ) == 0 || + ( right._nodeFlag | ExpNodeFlag.BuiltinType_Real ) == 0; return new ExpBinaryOperatorNode( source, left, right ) { _returnType = isFloat ? ExpressCompile.ExpReal : ExpressCompile.ExpInt, @@ -229,8 +229,8 @@ namespace StgSharp.Script.Express left.EqualityTypeConvert.Name ); } bool isFloat = - ( left._nodeFlag | ExpNodeFlag.BuiltinType_Real ) == 0 || ( right._nodeFlag | ExpNodeFlag.BuiltinType_Real ) == - 0; + ( left._nodeFlag | ExpNodeFlag.BuiltinType_Real ) == 0 || + ( right._nodeFlag | ExpNodeFlag.BuiltinType_Real ) == 0; return new ExpBinaryOperatorNode( source, left, right ) { _returnType = isFloat ? ExpressCompile.ExpReal : ExpressCompile.ExpInt, @@ -283,8 +283,8 @@ namespace StgSharp.Script.Express left.EqualityTypeConvert.Name ); } bool isFloat = - ( left._nodeFlag | ExpNodeFlag.BuiltinType_Real ) == 0 || ( right._nodeFlag | ExpNodeFlag.BuiltinType_Real ) == - 0; + ( left._nodeFlag | ExpNodeFlag.BuiltinType_Real ) == 0 || + ( right._nodeFlag | ExpNodeFlag.BuiltinType_Real ) == 0; return new ExpBinaryOperatorNode( source, left, right ) { _returnType = isFloat ? ExpressCompile.ExpReal : ExpressCompile.ExpInt, diff --git a/StgSharp.Script/Express/ExpAstNode/ExpEnumLiteralNode.cs b/StgSharp.Script/Express/ExpAstNode/ExpEnumLiteralNode.cs new file mode 100644 index 00000000..4b7b69c7 --- /dev/null +++ b/StgSharp.Script/Express/ExpAstNode/ExpEnumLiteralNode.cs @@ -0,0 +1,68 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpEnumLiteralNode.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; + +namespace StgSharp.Script.Express +{ + public class ExpEnumLiteralNode : ExpSyntaxNode + { + + private ExpEnumLiteralNode( Token t ) : base( t ) { } + + public override ExpSyntaxNode Left => Empty; + + public override ExpSyntaxNode Right => Empty; + + public override IExpElementSource EqualityTypeConvert => ExpInstantiableElement.Void; + + public string Literal { get; private set; } + + public static ExpEnumLiteralNode Create( Token t, Func parser ) + { + string l; + if( parser is null ) + { + l = t.Value; + } else + { + l = parser( t.Value ); + } + return new ExpEnumLiteralNode( t ) + { + Literal = l, + CodeConvertTemplate = l + }; + } + + } +} \ No newline at end of file diff --git a/StgSharp.Script/Express/ExpAstNode/ExpLiteralNode.cs b/StgSharp.Script/Express/ExpAstNode/ExpLiteralNode.cs index 45a5044c..98e043d0 100644 --- a/StgSharp.Script/Express/ExpAstNode/ExpLiteralNode.cs +++ b/StgSharp.Script/Express/ExpAstNode/ExpLiteralNode.cs @@ -88,7 +88,14 @@ namespace StgSharp.Script.Express } - public class ExpBoolNode : ExpElementInstance + public interface IExpBooleanSyntax + { + + bool Value { get; } + + } + + public class ExpBoolNode : ExpElementInstance, IExpBooleanSyntax { private readonly bool _value; @@ -152,7 +159,7 @@ namespace StgSharp.Script.Express } - public class ExpLogicValueNode : ExpElementInstance + public class ExpLogicValueNode : ExpElementInstance, IExpBooleanSyntax { private readonly ExpLogic _value; @@ -166,7 +173,7 @@ namespace StgSharp.Script.Express CodeConvertTemplate = isLiteral ? value.ToString() : source.Value; } - public ExpLogic Value => _value; + public ExpLogic LogicValue => _value; public override IExpElementSource EqualityTypeConvert { @@ -177,5 +184,7 @@ namespace StgSharp.Script.Express public override string TypeName => EqualityTypeConvert.Name; + bool IExpBooleanSyntax.Value => _value.ToBoolean(); + } } diff --git a/StgSharp.Script/Express/ExpAstNode/ExpRangeAndIndexNode.cs b/StgSharp.Script/Express/ExpAstNode/ExpRangeAndIndexNode.cs new file mode 100644 index 00000000..317ddaad --- /dev/null +++ b/StgSharp.Script/Express/ExpAstNode/ExpRangeAndIndexNode.cs @@ -0,0 +1,61 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpRangeAndIndexNode.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.Script.Express +{ + public class ExpIndexNode : ExpInstanceReferenceNode + { + + internal ExpIndexNode( Token t, ExpSyntaxNode node ) : base( t ) { } + + public override ExpSyntaxNode Left => throw new NotImplementedException(); + + public override ExpSyntaxNode Right => throw new NotImplementedException(); + + public override IExpElementSource EqualityTypeConvert => throw new NotImplementedException(); + + public static ExpIndexNode IndexAt( Token position, ExpSyntaxNode expression ) + { + ArgumentNullException.ThrowIfNull( expression ); + if( ExpNodeFlag.BuiltinType_Int.IsNotInFlag( expression.NodeFlag ) ) { + throw new ExpInvalidTypeException( + position, "Integer", expression.EqualityTypeConvert.Name ); + } + return new ExpIndexNode( position, expression ); + } + + } +} diff --git a/StgSharp.Script/Express/ExpAstNode/ExpRepeatNode.cs b/StgSharp.Script/Express/ExpAstNode/ExpRepeatNode.cs index 969864a5..7e46a6d4 100644 --- a/StgSharp.Script/Express/ExpAstNode/ExpRepeatNode.cs +++ b/StgSharp.Script/Express/ExpAstNode/ExpRepeatNode.cs @@ -54,9 +54,9 @@ namespace StgSharp.Script.Express ExpSyntaxNode whileRule ) : base( source ) { - if( variable.NodeFlag != begin.NodeFlag || begin.NodeFlag != end.NodeFlag || ( increment != - null && end.NodeFlag != - increment.NodeFlag ) ) { + if( variable.NodeFlag != begin.NodeFlag || + begin.NodeFlag != end.NodeFlag || + ( increment != null && end.NodeFlag != increment.NodeFlag ) ) { throw new InvalidCastException(); } if( IsNullOrEmpty( increment ) ) diff --git a/StgSharp.Script/Express/ExpAstNode/ExpTupleNode.cs b/StgSharp.Script/Express/ExpAstNode/ExpTupleNode.cs index c90a04c9..c502366e 100644 --- a/StgSharp.Script/Express/ExpAstNode/ExpTupleNode.cs +++ b/StgSharp.Script/Express/ExpAstNode/ExpTupleNode.cs @@ -60,9 +60,9 @@ namespace StgSharp.Script.Express return new ExpTupleNode( node ); } - public ExpNodeNextEnumerator TupleAsEnumerator() + public ExpNodePresidentEnumerator TupleAsEnumerator() { - return node.ToEnumerator(); + return node.ToPresidentEnumerator(); } } diff --git a/StgSharp.Script/Express/ExpAstNode/_ExpNode.cs b/StgSharp.Script/Express/ExpAstNode/_ExpNode.cs index 20181f43..1242a021 100644 --- a/StgSharp.Script/Express/ExpAstNode/_ExpNode.cs +++ b/StgSharp.Script/Express/ExpAstNode/_ExpNode.cs @@ -122,11 +122,12 @@ namespace StgSharp.Script.Express { IExpElementSource tLeft = left.EqualityTypeConvert, tRight = right.EqualityTypeConvert; - if( tLeft is not ExpInstantiableElement tLeftIns || tRight is not ExpInstantiableElement tRightIns ) { + if( tLeft is not ExpInstantiableElement tLeftIns || + tRight is not ExpInstantiableElement tRightIns ) { return false; } - if( ExpInstantiableElement.IsNullOrVoid( tLeftIns ) || ExpInstantiableElement.IsNullOrVoid( - tLeftIns ) ) { + if( ExpInstantiableElement.IsNullOrVoid( tLeftIns ) || + ExpInstantiableElement.IsNullOrVoid( tLeftIns ) ) { return false; } return tLeft.IsConvertable( tRight ); diff --git a/StgSharp.Script/Express/ExpNodeFlag.cs b/StgSharp.Script/Express/ExpNodeFlag.cs index f9caf5f3..6a34ba70 100644 --- a/StgSharp.Script/Express/ExpNodeFlag.cs +++ b/StgSharp.Script/Express/ExpNodeFlag.cs @@ -30,12 +30,39 @@ //----------------------------------------------------------------------- using System; using System.Collections.Generic; +using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; namespace StgSharp.Script.Express { + [EditorBrowsable( EditorBrowsableState.Never )] + public static class ExpNodeFlagHelper + { + + public static bool IsInFlag( this ExpNodeFlag flag, long target ) + { + return ( ( long )flag & target ) != 0; + } + + public static bool IsInFlag( this ExpNodeFlag flag, ExpNodeFlag target ) + { + return ( long )( flag & target ) != 0; + } + + public static bool IsNotInFlag( this ExpNodeFlag flag, long target ) + { + return ( ( long )flag & target ) == 0; + } + + public static bool IsNotInFlag( this ExpNodeFlag flag, ExpNodeFlag target ) + { + return ( long )( flag & target ) == 0; + } + + } + [Flags] public enum ExpNodeFlag : long { diff --git a/StgSharp.Script/Express/ExpNodeTempEnumerator.cs b/StgSharp.Script/Express/ExpNodeTempEnumerator.cs new file mode 100644 index 00000000..c52b277f --- /dev/null +++ b/StgSharp.Script/Express/ExpNodeTempEnumerator.cs @@ -0,0 +1,200 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpNodeTempEnumerator.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; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Script.Express +{ + public static class ExpNodeNextEnumeratorExtensions + { + + public static ExpNodeTempEnumerator AsCollectionEnumerator( + this ExpSyntaxNode token, + bool unpack ) + { + ExpNodeTempEnumerator enumerator = new ExpNodeTempEnumerator( token, unpack ); + IExpElementSource type = token.EqualityTypeConvert; + while( enumerator.MoveNext() ) + { + if( enumerator. Current != type ) { + throw new InvalidCastException(); + } + } + return enumerator; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static ExpNodePresidentEnumerator ToPresidentEnumerator( this ExpSyntaxNode node ) + { + return new ExpNodePresidentEnumerator( node ); + } + + public static ExpNodePresidentEnumerator TupleToPresidentEnumerator( + this ExpSyntaxNode tuple ) + { + return new ExpNodePresidentEnumerator( tuple.Right ); + } + + } + + public class ExpNodePresidentEnumerator : IEnumerator + { + + private int _index = -1; + private List _begin = new List(); + + public ExpNodePresidentEnumerator( ExpSyntaxNode token ) + { + _begin.Add( token ); + ExpSyntaxNode t = token; + while( !ReferenceEquals( t.Next, token ) && t.Next != null ) + { + t = t.Next; + _begin.Add( t ); + } + } + + public ExpSyntaxNode this[ int index ] + { + get + { + ArgumentOutOfRangeException.ThrowIfNegative( index ); + ArgumentOutOfRangeException.ThrowIfGreaterThan( index, _begin.Count ); + return _begin[ index ]; + } + } + + public ExpSyntaxNode Current => _begin[ _index ]; + + public int Count => _begin.Count; + + public void AssertEnumeratorCount( int count ) + { + if( _begin.Count != count ) { + throw new InvalidOperationException( + $"Enumerator count mismatch. Expected {count}, but got {_begin.Count}." ); + } + } + + public void AssertEnumeratorCount( int min, int max ) + { + if( _begin.Count < min || _begin.Count > max ) { + throw new InvalidOperationException( + $"Enumerator count mismatch. Expected between {min} and {max}, but got {_begin.Count}." ); + } + } + + public Span AsSpan() + { + return CollectionsMarshal.AsSpan( _begin ); + } + + public void Dispose() + { + return; + } + + public bool MoveNext() + { + if( _index < _begin.Count - 1 ) + { + _index++; + return true; + } + return false; + } + + public void Reset() + { + _index = -1; + } + + object IEnumerator.Current => this.Current; + + } + + public class ExpNodeTempEnumerator : IEnumerator + { + + private ExpSyntaxNode? _current,_begin; + + public ExpNodeTempEnumerator( ExpSyntaxNode node ) + { + _current = null; + _begin = node; + } + + public ExpNodeTempEnumerator( ExpSyntaxNode node, bool unpack ) + { + _current = null; + _begin = unpack ? node.Right : node; + } + + public ExpSyntaxNode Current => _current!; + + public bool MoveNext() + { + if( _current == null ) + { + _current = _begin; + return true; + } + ExpSyntaxNode next = _current.Next; + if( ReferenceEquals( next, _begin ) || next == null ) { + return false; + } + _current = next; + return true; + } + + void IDisposable.Dispose() + { + return; + } + + void IEnumerator.Reset() + { + _current = null; + } + + object IEnumerator.Current => _current; + + } +} diff --git a/StgSharp.Script/Express/ExpPostProcessor.cs b/StgSharp.Script/Express/ExpPostProcessor.cs index fb1939dc..fa6b18cd 100644 --- a/StgSharp.Script/Express/ExpPostProcessor.cs +++ b/StgSharp.Script/Express/ExpPostProcessor.cs @@ -50,50 +50,47 @@ namespace StgSharp.Script.Express public string Process( string filePath ) { - Dictionary factoryMethods = new Dictionary( - ); + Dictionary factoryMethods = new Dictionary(); FileStream file = File.OpenRead( filePath ); - SyntaxTree syntaxTree = CSharpSyntaxTree.ParseText( - File.ReadAllText( filePath ) ); + SyntaxTree syntaxTree = CSharpSyntaxTree.ParseText( File.ReadAllText( filePath ) ); - CSharpCompilation compilation = CSharpCompilation.Create( - "Analysis" ) - .AddSyntaxTrees( syntaxTree ) - .AddReferences( - MetadataReference.CreateFromFile( - typeof( object ).Assembly.Location ) ); + CSharpCompilation compilation = CSharpCompilation.Create( "Analysis" ) + .AddSyntaxTrees( syntaxTree ) + .AddReferences( + MetadataReference.CreateFromFile( + typeof( object ).Assembly.Location ) ); - INamedTypeSymbol? interfaceSymbol = compilation.GetTypeByMetadataName( - _interfaceName ); + INamedTypeSymbol? interfaceSymbol = compilation.GetTypeByMetadataName( _interfaceName ); if( interfaceSymbol == null ) { - throw new InvalidOperationException( - $"Interface '{_interfaceName}' not found." ); + throw new InvalidOperationException( $"Interface '{_interfaceName}' not found." ); } - SemanticModel semanticModel = compilation.GetSemanticModel( - syntaxTree ); + SemanticModel semanticModel = compilation.GetSemanticModel( syntaxTree ); SyntaxNode root = syntaxTree.GetRoot(); - IEnumerable classDeclarations = root.DescendantNodes( - ) - .OfType() - .Where( - cls => cls.BaseList?.Types.Any( - t => SymbolEqualityComparer.Default - .Equals( - semanticModel.GetTypeInfo( t.Type ) - .Type, - interfaceSymbol ) ) ?? - false ); + IEnumerable classDeclarations = root.DescendantNodes() + .OfType( + ) + .Where( + cls => cls.BaseList?.Types.Any( + t => SymbolEqualityComparer.Default + .Equals( + semanticModel.GetTypeInfo( + t.Type ) + .Type, + interfaceSymbol ) ) ?? + false ); - foreach( ClassDeclarationSyntax classDeclaration in classDeclarations ) { + foreach( ClassDeclarationSyntax classDeclaration in classDeclarations ) + { string className = classDeclaration.Identifier.Text; IMethodSymbol? factoryMethod = interfaceSymbol.GetMembers() - .OfType() - .FirstOrDefault( - m => m.IsStatic && m.Name == "CreateInstance" ); + .OfType() + .FirstOrDefault( + m => m.IsStatic && + m.Name == "CreateInstance" ); if( factoryMethod != null ) { factoryMethods[ className ] = $"() => {interfaceSymbol.Name}.CreateInstance()"; @@ -102,9 +99,7 @@ namespace StgSharp.Script.Express string code = "var factoryMethods = new Dictionary>\n{\n"; code += string.Join( - ",\n", - factoryMethods.Select( - kvp => $" {{ \"{kvp.Key}\", {kvp.Value} }}" ) ); + ",\n", factoryMethods.Select( kvp => $" {{ \"{kvp.Key}\", {kvp.Value} }}" ) ); code += "\n};"; return code; diff --git a/StgSharp.Script/Express/ExpSchemaSource.cs b/StgSharp.Script/Express/ExpSchemaSource.cs index 59c19391..8199c35f 100644 --- a/StgSharp.Script/Express/ExpSchemaSource.cs +++ b/StgSharp.Script/Express/ExpSchemaSource.cs @@ -58,8 +58,7 @@ namespace StgSharp.Script.Express _ruleDefineBegin = GetRuleDefineBegin(), _ruleDefineEnd = GetRuleDefineEnd(); - private readonly GeneratedExpSchema _compileResult = new GeneratedExpSchema( - ); + private readonly GeneratedExpSchema _compileResult = new GeneratedExpSchema(); private List _sourceCache = []; @@ -92,15 +91,19 @@ namespace StgSharp.Script.Express } name = _schemaBegin.Match( line ).Groups[ "namespace" ].Value; - while( !_schemaEnd.IsMatch( line ) ) { - if( TryReadConst( line, reader, - out IExpElementSource source ) ) { + while( !_schemaEnd.IsMatch( line ) ) + { + if( TryReadConst( line, reader, out IExpElementSource source ) ) + { _sourceCache.Add( source ); - } else if( TryReadType( line, reader, out source ) ) { + } else if( TryReadType( line, reader, out source ) ) + { _sourceCache.Add( source ); - } else if( TryReadEntity( line, reader, out source ) ) { + } else if( TryReadEntity( line, reader, out source ) ) + { _sourceCache.Add( source ); - } else if( TryReadRule( line, reader, out source ) ) { + } else if( TryReadRule( line, reader, out source ) ) + { _sourceCache.Add( source ); } else if( TryReadFunction( line, reader, out source ) ) { _sourceCache.Add( source ); @@ -110,33 +113,34 @@ namespace StgSharp.Script.Express } public static bool TryReadSchema( - string firstLine, - ExpFileSource reader, - out ExpSchemaSource source ) + string firstLine, + ExpFileSource reader, + out ExpSchemaSource source ) { - if( !_schemaBegin.IsMatch( firstLine ) ) { + 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 ) ) { + while( !_schemaEnd.IsMatch( firstLine ) ) + { + if( _source.TryReadConst( firstLine, reader, + out IExpElementSource _elementSource ) ) + { _source._sourceCache.Add( _elementSource ); - } else if( _source.TryReadType( - firstLine, reader, out _elementSource ) ) { + } else if( _source.TryReadType( firstLine, reader, out _elementSource ) ) + { _source._sourceCache.Add( _elementSource ); - } else if( _source.TryReadEntity( - firstLine, reader, out _elementSource ) ) { + } else if( _source.TryReadEntity( firstLine, reader, out _elementSource ) ) + { _source._sourceCache.Add( _elementSource ); - } else if( _source.TryReadRule( - firstLine, reader, out _elementSource ) ) { + } else if( _source.TryReadRule( firstLine, reader, out _elementSource ) ) + { _source._sourceCache.Add( _elementSource ); - } else if( _source.TryReadFunction( - firstLine, reader, out _elementSource ) ) { + } else if( _source.TryReadFunction( firstLine, reader, out _elementSource ) ) { _source._sourceCache.Add( _elementSource ); } firstLine = reader.ReadLine(); @@ -151,9 +155,7 @@ namespace StgSharp.Script.Express [GeneratedRegex( @"\s*END_CONSTANT;" )] private static partial Regex GetConstDefineEnd(); - [GeneratedRegex( - @"\s*ENTITY\s*(?[A-Za-z0-9_]+)\s*", - RegexOptions.Compiled )] + [GeneratedRegex( @"\s*ENTITY\s*(?[A-Za-z0-9_]+)\s*", RegexOptions.Compiled )] private static partial Regex GetEntityDefineBegin(); [GeneratedRegex( @@ -184,9 +186,7 @@ namespace StgSharp.Script.Express [GeneratedRegex( @"\s*SCHEMA\s*(?[A-Za-z0-9_]+)\s?;" )] private static partial Regex GetSchemaBegin(); - [GeneratedRegex( - @"END_SCHEMA;\s*--\s*(?[A-Za-z0-9_]+)", - RegexOptions.Compiled )] + [GeneratedRegex( @"END_SCHEMA;\s*--\s*(?[A-Za-z0-9_]+)", RegexOptions.Compiled )] private static partial Regex GetSchemaEnd(); [GeneratedRegex( @@ -200,18 +200,19 @@ namespace StgSharp.Script.Express private static partial Regex GetTypeDefineEnd(); private bool TryReadConst( - string firstLine, - ExpFileSource reader, - out IExpElementSource source ) + string firstLine, + ExpFileSource reader, + out IExpElementSource source ) { Match match = _constDefineBegin.Match( firstLine ); - if( match.Success ) { + if( match.Success ) + { ScriptSourceTransmitter transmitter = new ScriptSourceTransmitter( "END_CONSTANT", reader.Location ); - ExpConstantCollectionSource _source = new ExpConstantCollectionSource( - transmitter ); + ExpConstantCollectionSource _source = new ExpConstantCollectionSource( transmitter ); string line = reader.ReadLine(); - while( !_constDefineEnd.IsMatch( line ) ) { + while( !_constDefineEnd.IsMatch( line ) ) + { transmitter.WriteLine( line ); line = reader.ReadLine(); } @@ -224,27 +225,28 @@ namespace StgSharp.Script.Express } private bool TryReadEntity( - string firstLine, - ExpFileSource reader, - out IExpElementSource source ) + string firstLine, + ExpFileSource reader, + out IExpElementSource source ) { Match match = _entityDefineBegin.Match( firstLine ); - if( match.Success ) { + if( match.Success ) + { ScriptSourceTransmitter transmitter = new ScriptSourceTransmitter( "END_ENTITY", reader.Location ); ExpEntitySource _source = new ExpEntitySource( match.Groups[ "TypeName" ].ToString(), transmitter ); string line = reader.ReadLine(); match = _entityDefineEnd.Match( line ); - while( !match.Success ) { + 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 ExpInvalidElementDeclareEndingExceptions( - _source.Name, endedName ); + throw new ExpInvalidElementDeclareEndingExceptions( _source.Name, endedName ); } transmitter.WriteLine( "END_ENTITY" ); source = _source; @@ -255,12 +257,13 @@ namespace StgSharp.Script.Express } private bool TryReadFunction( - string firstLine, - ExpFileSource reader, - out IExpElementSource source ) + string firstLine, + ExpFileSource reader, + out IExpElementSource source ) { Match match = _functionDefineBegin.Match( firstLine ); - if( match.Success ) { + if( match.Success ) + { ScriptSourceTransmitter transmitter = new ScriptSourceTransmitter( "END_FUNCTION", reader.Location ); ExpFunctionSource _source = new ExpFunctionSource( @@ -268,15 +271,15 @@ namespace StgSharp.Script.Express transmitter.WriteLine( match.Groups[ "Remaining" ].ToString() ); string line = reader.ReadLine(); match = _functionDefineEnd.Match( line ); - while( !match.Success ) { + 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 ExpInvalidElementDeclareEndingExceptions( - _source.Name, endedName ); + throw new ExpInvalidElementDeclareEndingExceptions( _source.Name, endedName ); } transmitter.WriteLine( "END_FUNCTION" ); source = _source; @@ -287,12 +290,13 @@ namespace StgSharp.Script.Express } private bool TryReadRule( - string firstLine, - ExpFileSource reader, - out IExpElementSource source ) + string firstLine, + ExpFileSource reader, + out IExpElementSource source ) { Match match = _ruleDefineBegin.Match( firstLine ); - if( match.Success ) { + if( match.Success ) + { ScriptSourceTransmitter transmitter = new ScriptSourceTransmitter( "END_RULE", reader.Location ); ExpRuleSource _source = new ExpRuleSource( @@ -303,15 +307,15 @@ namespace StgSharp.Script.Express } string line = reader.ReadLine(); match = _ruleDefineEnd.Match( line ); - while( !match.Success ) { + 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 ExpInvalidElementDeclareEndingExceptions( - _source.Name, endedName ); + throw new ExpInvalidElementDeclareEndingExceptions( _source.Name, endedName ); } transmitter.WriteLine( "END_RULE" ); source = _source; @@ -322,12 +326,13 @@ namespace StgSharp.Script.Express } private bool TryReadType( - string firstLine, - ExpFileSource reader, - out IExpElementSource source ) + string firstLine, + ExpFileSource reader, + out IExpElementSource source ) { Match match = _typeDefineBegin.Match( firstLine ); - if( match.Success ) { + if( match.Success ) + { ScriptSourceTransmitter transmitter = new ScriptSourceTransmitter( "END_ENTITY", reader.Location ); ExpTypeSource _source = new ExpTypeSource( @@ -335,15 +340,15 @@ namespace StgSharp.Script.Express transmitter.WriteLine( match.Groups[ "Remaining" ].ToString() ); string line = reader.ReadLine(); match = _typeDefineEnd.Match( line ); - while( !match.Success ) { + 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 ExpInvalidElementDeclareEndingExceptions( - _source.Name, endedName ); + throw new ExpInvalidElementDeclareEndingExceptions( _source.Name, endedName ); } transmitter.WriteLine( "END_ENTITY" ); source = _source; diff --git a/StgSharp.Script/Express/ExpSource.cs b/StgSharp.Script/Express/ExpSource.cs index 1aee1a0c..31815eb8 100644 --- a/StgSharp.Script/Express/ExpSource.cs +++ b/StgSharp.Script/Express/ExpSource.cs @@ -51,14 +51,13 @@ namespace StgSharp.Script.Express public ExpFileSource( string path ) { - if ( !File.Exists( path ) ) { + if( !File.Exists( path ) ) { throw new FileNotFoundException(); } - _expFileStream = new FileStream( - path, FileMode.Open, FileAccess.Read ); + _expFileStream = new FileStream( path, FileMode.Open, FileAccess.Read ); _expMemoryMappedFile = MemoryMappedFile.CreateFromFile( - _expFileStream, null, 0, MemoryMappedFileAccess.Read, - HandleInheritability.None, true ); + _expFileStream, null, 0, MemoryMappedFileAccess.Read, HandleInheritability.None, + true ); _expMemoryMappedStream = _expMemoryMappedFile.CreateViewStream( offset: 0, size: 0, access: MemoryMappedFileAccess.Read ); _memoryReader = new StreamReader( _expMemoryMappedStream ); @@ -79,9 +78,7 @@ namespace StgSharp.Script.Express GC.SuppressFinalize( this ); } - public void EndWriting() - { - } + public void EndWriting() { } public string ReadLine() { @@ -92,7 +89,7 @@ namespace StgSharp.Script.Express return line; } - public string ReadLine(out int position) + public string ReadLine( out int position ) { throw new NotImplementedException(); } @@ -105,15 +102,12 @@ namespace StgSharp.Script.Express readLineSemaphore.Release(); } - IScriptSourceProvider IScriptSourceProvider.Slice(int location, int count) - { - throw new NotSupportedException(); - } - protected virtual void Dispose( bool disposing ) { - if( !disposedValue ) { - if( disposing ) { + if( !disposedValue ) + { + if( disposing ) + { _expFileStream.Dispose(); _expMemoryMappedFile.Dispose(); _expMemoryMappedStream.Dispose(); @@ -123,5 +117,10 @@ namespace StgSharp.Script.Express } } + IScriptSourceProvider IScriptSourceProvider.Slice( int location, int count ) + { + throw new NotSupportedException(); + } + } } diff --git a/StgSharp.Script/Express/ExpSyntaxAnalyzer.CaseOf.cs b/StgSharp.Script/Express/ExpSyntaxAnalyzer.CaseOf.cs index ad37f904..b0d3c9d6 100644 --- a/StgSharp.Script/Express/ExpSyntaxAnalyzer.CaseOf.cs +++ b/StgSharp.Script/Express/ExpSyntaxAnalyzer.CaseOf.cs @@ -64,8 +64,8 @@ namespace StgSharp.Script.Express return true; case ":": state = _cache.StateOfCurrentDepth(); - if( state.CurrentState != ExpKeyword.Of && state.CurrentState != - ExpKeyword.Otherwise ) + if( state.CurrentState != ExpKeyword.Of && + state.CurrentState != ExpKeyword.Otherwise ) { root = _cache.PackAllStatements(); state.CloseCurrentCase( root ); @@ -95,7 +95,7 @@ namespace StgSharp.Script.Express _cache.StatementsInDepth.Push( root ); return true; default: - AppendToken_common( t ); + AppendToken_Common( t ); return true; } } diff --git a/StgSharp.Script/Express/ExpSyntaxAnalyzer.Common.cs b/StgSharp.Script/Express/ExpSyntaxAnalyzer.Common.cs index 98e6042d..a02a1313 100644 --- a/StgSharp.Script/Express/ExpSyntaxAnalyzer.Common.cs +++ b/StgSharp.Script/Express/ExpSyntaxAnalyzer.Common.cs @@ -249,7 +249,8 @@ namespace StgSharp.Script.Express private bool TryParseInstance( Token t ) { if( _local.TryGetMember( t.Value, - out ExpSyntaxNode? node ) && node is ExpElementInstance instance ) + out ExpSyntaxNode? node ) && + node is ExpElementInstance instance ) { _cache.PushOperand( ExpInstanceReferenceNode.MakeReferenceFrom( t, instance ) ); return true; @@ -260,7 +261,8 @@ namespace StgSharp.Script.Express } else if( _cache.IsLastAddedOperator ) { if( _cache.PeekOperand( out _, - out ExpSyntaxNode? typenode ) && typenode is ExpMetaRefNode typeRef ) + out ExpSyntaxNode? typenode ) && + typenode is ExpMetaRefNode typeRef ) { _cache.PopOperand( out _, out _ ); _local.AddMember( t.Value, typeRef.SourceRef.CreateInstanceNode( t ) ); diff --git a/StgSharp.Script/Express/ExpSyntaxAnalyzer.If.cs b/StgSharp.Script/Express/ExpSyntaxAnalyzer.If.cs index 1b95928f..be436fd9 100644 --- a/StgSharp.Script/Express/ExpSyntaxAnalyzer.If.cs +++ b/StgSharp.Script/Express/ExpSyntaxAnalyzer.If.cs @@ -107,7 +107,7 @@ namespace StgSharp.Script.Express _cache.StatementsInDepth.Push( ifNode ); return true; default: - AppendToken_common( t ); + AppendToken_Common( t ); return true; } } diff --git a/StgSharp.Script/Express/ExpSyntaxAnalyzer.RangeAndIndex.cs b/StgSharp.Script/Express/ExpSyntaxAnalyzer.RangeAndIndex.cs new file mode 100644 index 00000000..c8a0daf6 --- /dev/null +++ b/StgSharp.Script/Express/ExpSyntaxAnalyzer.RangeAndIndex.cs @@ -0,0 +1,123 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpSyntaxAnalyzer.RangeAndIndex.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.Operations; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +using ExpKeyword = StgSharp.Script.Express.ExpressCompile.Keyword; + +namespace StgSharp.Script.Express +{ + public partial class ExpSyntaxAnalyzer + { + + private void AppendToken_RangeAndIndex( Token t ) + { + ExpSyntaxNode root; + switch( t.Value ) + { + case "[": + RangeAndIndexState state = new RangeAndIndexState(); + state.CurrentState = t.Value; + _cache.CurrentDepthMark.StateCache = state; + break; + case "]": + state = _cache.StateOfCurrentDepth(); + + //Generate range or index object + if( _cache.StatementsInDepth.Count != 0 ) + { + throw new ExpInvalidSyntaxException( + "Range and index syntax error: expected one statement to define range beginning." ); + } + ReverseAnalyzeStatement(); + root = _cache.StatementsInDepth.Pop(); + if( ExpNodeFlag.BuiltinType_Int.IsNotInFlag( root.NodeFlag ) ) { + throw new ExpInvalidTypeException( + root, "integer", root.EqualityTypeConvert?.Name ?? string.Empty ); + } + if( state.CurrentState == "[" ) { } else { } + break; + case ":": + state = _cache.StateOfCurrentDepth(); + if( state.CurrentState != "[" ) { + throw new ExpInvalidSyntaxException( + "Range and index syntax error: wrong position of :" ); + } + if( _cache.StatementsInDepth.Count != 0 ) { + throw new ExpInvalidSyntaxException( + "Range and index syntax error: expected one statement to define range beginning." ); + } + ReverseAnalyzeStatement(); + root = _cache.StatementsInDepth.Pop(); + if( ExpNodeFlag.BuiltinType_Int.IsNotInFlag( root.NodeFlag ) ) { + throw new ExpInvalidTypeException( + root, "integer", root.EqualityTypeConvert?.Name ?? string.Empty ); + } + state.RangeStart = root; + break; + default: + state = _cache.StateOfCurrentDepth(); + if( t.Value == "?" ) + { + switch( state.CurrentState ) + { + case ":": + _cache.PushOperand( new ExpIntNode( t, int.MaxValue, true ) ); + break; + case "[": + _cache.PushOperand( new ExpIntNode( t, int.MaxValue, true ) ); + break; + default: + throw new ExpInvalidSyntaxException( + "Range and index syntax error: \"?\" can only be used in range or index" ); + } + } + AppendToken_Common( t ); + break; + } + } + + private class RangeAndIndexState : ICompileDepthState + { + + public ExpSyntaxNode RangeStart { get; set; } + + public string CurrentState { get; set; } = string.Empty; + + } + + } +} diff --git a/StgSharp.Script/Express/ExpSyntaxAnalyzer.RepeatLoop.cs b/StgSharp.Script/Express/ExpSyntaxAnalyzer.RepeatLoop.cs index 7b1df2e2..9cc7f93e 100644 --- a/StgSharp.Script/Express/ExpSyntaxAnalyzer.RepeatLoop.cs +++ b/StgSharp.Script/Express/ExpSyntaxAnalyzer.RepeatLoop.cs @@ -76,12 +76,12 @@ namespace StgSharp.Script.Express case ExpKeyword.Semicolon: if( t.Value != ExpKeyword.EndRepeat ) { - AppendToken_common( t ); + AppendToken_Common( t ); return true; } break; default: - AppendToken_common( t ); + AppendToken_Common( t ); return false; } ExpSyntaxNode root = _cache.PackAllStatements(); @@ -118,7 +118,7 @@ namespace StgSharp.Script.Express state.Begin = root; return true; default: - AppendToken_common( t ); + AppendToken_Common( t ); return true; } } @@ -137,7 +137,7 @@ namespace StgSharp.Script.Express state.CurrentState = ExpKeyword.While; break; default: - AppendToken_common( t ); + AppendToken_Common( t ); return true; } while( _cache.TryPopOperator( out Token op ) ) { @@ -162,7 +162,7 @@ namespace StgSharp.Script.Express state.CurrentState = ExpKeyword.While; break; default: - AppendToken_common( t ); + AppendToken_Common( t ); return true; } while( _cache.TryPopOperator( out Token op ) ) { @@ -181,7 +181,7 @@ namespace StgSharp.Script.Express state.CurrentState = ExpKeyword.Semicolon; break; default: - AppendToken_common( t ); + AppendToken_Common( t ); return true; } while( _cache.TryPopOperator( out Token op ) ) { @@ -210,8 +210,9 @@ namespace StgSharp.Script.Express if( ExpTypeSource.IsNullOrVoid( state.IncrementVariableType ) ) { if( ( _local.TryGetMember( t.Value, - out ExpSyntaxNode? node ) && node is ExpElementInstance instance ) || _tempVariableInLoops.TryGetValue( - t.Value, out instance ) ) + out ExpSyntaxNode? node ) && + node is ExpElementInstance instance ) || + _tempVariableInLoops.TryGetValue( t.Value, out instance ) ) { state.IncrementVariable = ExpInstanceReferenceNode.MakeReferenceFrom( t, instance ); @@ -241,7 +242,7 @@ namespace StgSharp.Script.Express state.CurrentState = ExpKeyword.Until; break; default: - AppendToken_common( t ); + AppendToken_Common( t ); return true; } while( _cache.TryPopOperator( out Token op ) ) { diff --git a/StgSharp.Script/Express/ExpSyntaxAnalyzer.ReverseAnalysing.cs b/StgSharp.Script/Express/ExpSyntaxAnalyzer.ReverseAnalysing.cs new file mode 100644 index 00000000..b7706bfa --- /dev/null +++ b/StgSharp.Script/Express/ExpSyntaxAnalyzer.ReverseAnalysing.cs @@ -0,0 +1,94 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpSyntaxAnalyzer.ReverseAnalysing.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.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +using ExpKeyword = StgSharp.Script.Express.ExpressCompile.Keyword; + +namespace StgSharp.Script.Express +{ + public partial class ExpSyntaxAnalyzer + { + + private void ClosePrefixReverse( Token rightSeparator ) + { + ExpSyntaxNode root; + ReverseAnalyzeStatement(); + root = _cache.PackAllStatements(); + if( rightSeparator.Value == ")" ) { + root = ExpTupleNode.Pack( root ); + } + _cache.DecreaseDepth(); + if( IsSeparatorMatch( _cache.PeekOperator(), rightSeparator ) ) + { + _cache.PopOperator(); + _cache.PushOperand( root ); + } else + { + throw new ExpCompileException( + rightSeparator, "Ending of block does not match its begging" ); + } + } + + private void ReverseAnalyzeStatement() + { + ExpSyntaxNode root; + if( _cache.OperatorAheadOfDepth == 0 ) + { + switch( _cache.OperandAheadOfDepth ) + { + case 1: + _cache.PopOperand( out _, out ExpSyntaxNode? statement ); + _cache.StatementsInDepth.Push( statement ); + break; + case 0: + _cache.StatementsInDepth.Push( ExpSyntaxNode.Empty ); + break; + default: + throw new ExpInvalidSyntaxException( + "More than one operand but no operator provided." ); + } + } else + { + while( _cache.TryPopOperator( out Token op ) ) { + ConvertAndPushOneOperator( op ); + } + _cache.PopOperand( out _, out root ); + _cache.StatementsInDepth.Push( root ); + } + } + + } +} diff --git a/StgSharp.Script/Express/ExpSyntaxAnalyzer.cs b/StgSharp.Script/Express/ExpSyntaxAnalyzer.cs index dcb054b5..b7bd5025 100644 --- a/StgSharp.Script/Express/ExpSyntaxAnalyzer.cs +++ b/StgSharp.Script/Express/ExpSyntaxAnalyzer.cs @@ -90,7 +90,7 @@ namespace StgSharp.Script.Express AppendToken_RepeatLoop( expToken ); break; default: - AppendToken_common( expToken ); + AppendToken_Common( expToken ); break; } } @@ -112,7 +112,7 @@ namespace StgSharp.Script.Express /// Append a token to top of cache. This method will automatically convert token to node /// if meets separators or operators. /// - private void AppendToken_common( Token expToken ) + private void AppendToken_Common( Token expToken ) { switch( expToken.Flag ) { diff --git a/StgSharp.Script/Express/ExpTokenReader.cs b/StgSharp.Script/Express/ExpTokenReader.cs index 19e5f033..e1d9b4cb 100644 --- a/StgSharp.Script/Express/ExpTokenReader.cs +++ b/StgSharp.Script/Express/ExpTokenReader.cs @@ -71,7 +71,6 @@ namespace StgSharp.Script.Express private IScriptSourceProvider _provider; private Regex - _nextHashtagSymbolPattern = GetHashtagSymbolPattern() , _nextWordTokenPattern = GetNextWordTokenPattern(), _nextStringLiteralPattern = GetStringLiteralPattern(), _nextNumberLiteralPattern = GetNumberLiteralPattern(), @@ -91,7 +90,8 @@ namespace StgSharp.Script.Express public bool IsEmpty { - get => ( ( string.IsNullOrEmpty( _lineCache ) || _current >= _lineCache.Length ) ) && _provider.IsEmpty; + get => ( ( string.IsNullOrEmpty( _lineCache ) || _current >= _lineCache.Length ) ) && + _provider.IsEmpty; } public ExpTokenReaderPreProcessor TokenReaderPreProcessor { get; set; } = ExpTokenReaderPreProcessor.Default; @@ -173,22 +173,6 @@ namespace StgSharp.Script.Express Match match; switch( c ) { - case '#': - match = _nextHashtagSymbolPattern.Match( _lineCache, _current ); - if( match.Success ) - { - begin = match.Groups[ "token" ].Index; - end = match.Groups[ "end" ].Index; - rest = match.Groups[ "rest" ].Index; - _current = rest; - _last = new( - ExpressCompile.PoolString( source[ 0..( end - begin ) ] ), _lineNum, - begin, TokenFlag.Member ); - return _last; - } else - { - throw new ExpInvalidCharException( '#' ); - } case '\'': char cNext = source[ 1 ]; if( cNext == '\'' ) //empty string @@ -281,8 +265,9 @@ namespace StgSharp.Script.Express { begin = _current; _current++; - if( _last.Flag == TokenFlag.Member || _last.Flag == - TokenFlag.Index_Right || _last.Flag == TokenFlag.Separator_Right ) + if( _last.Flag == TokenFlag.Member || + _last.Flag == TokenFlag.Index_Right || + _last.Flag == TokenFlag.Separator_Right ) { _last = new( ExpressCompile.PoolString( source[ ..1 ] ), _lineNum, begin, @@ -406,11 +391,6 @@ namespace StgSharp.Script.Express return !IsEmpty; } - [GeneratedRegex( - @"(?#[0-9A-Za-z]+)(?\s*?)(?\S|$)", - RegexOptions.Singleline )] - private static partial Regex GetHashtagSymbolPattern(); - [GeneratedRegex( @"(?[a-zA-Z][a-zA-Z0-9_]*)(?\s*?)(?\S|$)", RegexOptions.Singleline )] @@ -435,7 +415,7 @@ namespace StgSharp.Script.Express private static partial Regex GetStringLiteralPatternWithSingle(); [GeneratedRegex( - @"(?[:<>=+\-*\/]+)(?\s?)\s*?(?\S|$)", + @"(?[:<>=+\-*\/\.]+)(?\s?)\s*?(?\S|$)", RegexOptions.Singleline )] private static partial Regex GetSymbolPattern(); diff --git a/StgSharp.Script/Express/IExpConvertableFrom.cs b/StgSharp.Script/Express/IExpConvertableFrom.cs new file mode 100644 index 00000000..61ecf92a --- /dev/null +++ b/StgSharp.Script/Express/IExpConvertableFrom.cs @@ -0,0 +1,303 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IExpConvertableFrom.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.Script.Express +{ + // Base interface with one generic parameter renamed to T0 + public interface IExpConvertableFrom where T0: IExpConvertableFrom + { + + void FromInstance( T0 entity ); + + bool IsConvertableTo( string entityTypeName ); + + } + + // 2 generic parameters + public interface IExpConvertableFrom : IExpConvertableFrom + where T0: IExpConvertableFrom + where T1: IExpConvertableFrom + { + + void FromInstance( T1 entity ); + + } + + // 3 generic parameters + public interface IExpConvertableFrom : IExpConvertableFrom + where T0: IExpConvertableFrom + where T1: IExpConvertableFrom + where T2: IExpConvertableFrom + { + + void FromInstance( T2 entity ); + + } + + // 4 generic parameters + public interface IExpConvertableFrom : IExpConvertableFrom + where T0: IExpConvertableFrom + where T1: IExpConvertableFrom + where T2: IExpConvertableFrom + where T3: IExpConvertableFrom + { + + void FromInstance( T3 entity ); + + } + + // 5 generic parameters + public interface IExpConvertableFrom : IExpConvertableFrom + where T0: IExpConvertableFrom + where T1: IExpConvertableFrom + where T2: IExpConvertableFrom + where T3: IExpConvertableFrom + where T4: IExpConvertableFrom + { + + void FromInstance( T4 entity ); + + } + + // 6 generic parameters + public interface IExpConvertableFrom : IExpConvertableFrom + where T0: IExpConvertableFrom + where T1: IExpConvertableFrom + where T2: IExpConvertableFrom + where T3: IExpConvertableFrom + where T4: IExpConvertableFrom + where T5: IExpConvertableFrom + { + + void FromInstance( T5 entity ); + + } + + // 7 generic parameters + public interface IExpConvertableFrom : IExpConvertableFrom + where T0: IExpConvertableFrom + where T1: IExpConvertableFrom + where T2: IExpConvertableFrom + where T3: IExpConvertableFrom + where T4: IExpConvertableFrom + where T5: IExpConvertableFrom + where T6: IExpConvertableFrom + { + + void FromInstance( T6 entity ); + + } + + // 8 generic parameters + public interface IExpConvertableFrom : IExpConvertableFrom + where T0: IExpConvertableFrom + where T1: IExpConvertableFrom + where T2: IExpConvertableFrom + where T3: IExpConvertableFrom + where T4: IExpConvertableFrom + where T5: IExpConvertableFrom + where T6: IExpConvertableFrom + where T7: IExpConvertableFrom + { + + void FromInstance( T7 entity ); + + } + + // 9 generic parameters + public interface IExpConvertableFrom : IExpConvertableFrom + where T0: IExpConvertableFrom + where T1: IExpConvertableFrom + where T2: IExpConvertableFrom + where T3: IExpConvertableFrom + where T4: IExpConvertableFrom + where T5: IExpConvertableFrom + where T6: IExpConvertableFrom + where T7: IExpConvertableFrom + where T8: IExpConvertableFrom + { + + void FromInstance( T8 entity ); + + } + + // 10 generic parameters + public interface IExpConvertableFrom : IExpConvertableFrom + where T0: IExpConvertableFrom + where T1: IExpConvertableFrom + where T2: IExpConvertableFrom + where T3: IExpConvertableFrom + where T4: IExpConvertableFrom + where T5: IExpConvertableFrom + where T6: IExpConvertableFrom + where T7: IExpConvertableFrom + where T8: IExpConvertableFrom + where T9: IExpConvertableFrom + { + + void FromInstance( T9 entity ); + + } + + // 11 generic parameters + public interface IExpConvertableFrom : IExpConvertableFrom + where T0: IExpConvertableFrom + where T1: IExpConvertableFrom + where T2: IExpConvertableFrom + where T3: IExpConvertableFrom + where T4: IExpConvertableFrom + where T5: IExpConvertableFrom + where T6: IExpConvertableFrom + where T7: IExpConvertableFrom + where T8: IExpConvertableFrom + where T9: IExpConvertableFrom + where T10: IExpConvertableFrom + { + + void FromInstance( T10 entity ); + + } + + // 12 generic parameters + public interface IExpConvertableFrom : IExpConvertableFrom + where T0: IExpConvertableFrom + where T1: IExpConvertableFrom + where T2: IExpConvertableFrom + where T3: IExpConvertableFrom + where T4: IExpConvertableFrom + where T5: IExpConvertableFrom + where T6: IExpConvertableFrom + where T7: IExpConvertableFrom + where T8: IExpConvertableFrom + where T9: IExpConvertableFrom + where T10: IExpConvertableFrom + where T11: IExpConvertableFrom + { + + void FromInstance( T11 entity ); + + } + + // 13 generic parameters + public interface IExpConvertableFrom : IExpConvertableFrom + where T0: IExpConvertableFrom + where T1: IExpConvertableFrom + where T2: IExpConvertableFrom + where T3: IExpConvertableFrom + where T4: IExpConvertableFrom + where T5: IExpConvertableFrom + where T6: IExpConvertableFrom + where T7: IExpConvertableFrom + where T8: IExpConvertableFrom + where T9: IExpConvertableFrom + where T10: IExpConvertableFrom + where T11: IExpConvertableFrom + where T12: IExpConvertableFrom + { + + void FromInstance( T12 entity ); + + } + + // 14 generic parameters + public interface IExpConvertableFrom : IExpConvertableFrom + where T0: IExpConvertableFrom + where T1: IExpConvertableFrom + where T2: IExpConvertableFrom + where T3: IExpConvertableFrom + where T4: IExpConvertableFrom + where T5: IExpConvertableFrom + where T6: IExpConvertableFrom + where T7: IExpConvertableFrom + where T8: IExpConvertableFrom + where T9: IExpConvertableFrom + where T10: IExpConvertableFrom + where T11: IExpConvertableFrom + where T12: IExpConvertableFrom + where T13: IExpConvertableFrom + { + + void FromInstance( T13 entity ); + + } + + // 15 generic parameters + public interface IExpConvertableFrom : IExpConvertableFrom + where T0: IExpConvertableFrom + where T1: IExpConvertableFrom + where T2: IExpConvertableFrom + where T3: IExpConvertableFrom + where T4: IExpConvertableFrom + where T5: IExpConvertableFrom + where T6: IExpConvertableFrom + where T7: IExpConvertableFrom + where T8: IExpConvertableFrom + where T9: IExpConvertableFrom + where T10: IExpConvertableFrom + where T11: IExpConvertableFrom + where T12: IExpConvertableFrom + where T13: IExpConvertableFrom + where T14: IExpConvertableFrom + { + + void FromInstance( T14 entity ); + + } + + // 16 generic parameters + public interface IExpConvertableFrom : IExpConvertableFrom + where T0: IExpConvertableFrom + where T1: IExpConvertableFrom + where T2: IExpConvertableFrom + where T3: IExpConvertableFrom + where T4: IExpConvertableFrom + where T5: IExpConvertableFrom + where T6: IExpConvertableFrom + where T7: IExpConvertableFrom + where T8: IExpConvertableFrom + where T9: IExpConvertableFrom + where T10: IExpConvertableFrom + where T11: IExpConvertableFrom + where T12: IExpConvertableFrom + where T13: IExpConvertableFrom + where T14: IExpConvertableFrom + where T15: IExpConvertableFrom + { + + void FromInstance( T15 entity ); + + } +} diff --git a/StgSharp.Script/bin/x64/Release/net8.0/StgSharp.Script.deps.json b/StgSharp.Script/bin/x64/Release/net8.0/StgSharp.Script.deps.json new file mode 100644 index 00000000..064281a8 --- /dev/null +++ b/StgSharp.Script/bin/x64/Release/net8.0/StgSharp.Script.deps.json @@ -0,0 +1,227 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "StgSharp.Script/1.0.0": { + "dependencies": { + "CommunityToolkit.HighPerformance": "8.4.0", + "Microsoft.CodeAnalysis.CSharp": "4.13.0", + "StgSharp.Common": "1.0.0" + }, + "runtime": { + "StgSharp.Script.dll": {} + } + }, + "CommunityToolkit.HighPerformance/8.4.0": { + "runtime": { + "lib/net8.0/CommunityToolkit.HighPerformance.dll": { + "assemblyVersion": "8.4.0.0", + "fileVersion": "8.4.0.1" + } + } + }, + "Microsoft.CodeAnalysis.Analyzers/3.11.0": {}, + "Microsoft.CodeAnalysis.Common/4.13.0": { + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.11.0", + "System.Collections.Immutable": "8.0.0", + "System.Reflection.Metadata": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.CodeAnalysis.dll": { + "assemblyVersion": "4.13.0.0", + "fileVersion": "4.1300.25.12011" + } + }, + "resources": { + "lib/net8.0/cs/Microsoft.CodeAnalysis.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/de/Microsoft.CodeAnalysis.resources.dll": { + "locale": "de" + }, + "lib/net8.0/es/Microsoft.CodeAnalysis.resources.dll": { + "locale": "es" + }, + "lib/net8.0/fr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/it/Microsoft.CodeAnalysis.resources.dll": { + "locale": "it" + }, + "lib/net8.0/ja/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ko/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/pl/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pt-BR/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/ru/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/tr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.CSharp/4.13.0": { + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.11.0", + "Microsoft.CodeAnalysis.Common": "4.13.0", + "System.Collections.Immutable": "8.0.0", + "System.Reflection.Metadata": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.CodeAnalysis.CSharp.dll": { + "assemblyVersion": "4.13.0.0", + "fileVersion": "4.1300.25.12011" + } + }, + "resources": { + "lib/net8.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "de" + }, + "lib/net8.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "es" + }, + "lib/net8.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "it" + }, + "lib/net8.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CSharp/4.7.0": {}, + "System.Collections.Immutable/8.0.0": {}, + "System.Reflection.Metadata/8.0.0": { + "dependencies": { + "System.Collections.Immutable": "8.0.0" + } + }, + "System.Runtime.CompilerServices.Unsafe/6.1.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" + } + } + } + } + }, + "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.CodeAnalysis.Analyzers/3.11.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-v/EW3UE8/lbEYHoC2Qq7AR/DnmvpgdtAMndfQNmpuIMx/Mto8L5JnuCfdBYtgvalQOtfNCnxFejxuRrryvUTsg==", + "path": "microsoft.codeanalysis.analyzers/3.11.0", + "hashPath": "microsoft.codeanalysis.analyzers.3.11.0.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.Common/4.13.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-T8nRl4mAUY4mhdYM4U2ra2vP2EL+ol8Yqwo0gwC/V55vmlXq9NxdIkZJynTpTL1uX/jHijJ90AeOEx4lf7OwzQ==", + "path": "microsoft.codeanalysis.common/4.13.0", + "hashPath": "microsoft.codeanalysis.common.4.13.0.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.CSharp/4.13.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-BsH7Vijbj9IL7Fj4k/ysZSVyLGFqr75wmdFGwCKWJvSjnA1xwPaQ3hkB2BQdHOt5CpEYA6Q0I6Oo5sDTDHqHsg==", + "path": "microsoft.codeanalysis.csharp/4.13.0", + "hashPath": "microsoft.codeanalysis.csharp.4.13.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.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.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.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/net8.0/StgSharp.Script.AssemblyInfo.cs b/StgSharp.Script/obj/Debug/net8.0/StgSharp.Script.AssemblyInfo.cs index c2bbcd95..c1b99397 100644 --- a/StgSharp.Script/obj/Debug/net8.0/StgSharp.Script.AssemblyInfo.cs +++ b/StgSharp.Script/obj/Debug/net8.0/StgSharp.Script.AssemblyInfo.cs @@ -14,7 +14,7 @@ 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+a6411e2f25010961d278c5bcb4a929e21b176bba")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba")] [assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Script")] [assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Script")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/StgSharp.Script/obj/x64/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/StgSharp.Script/obj/x64/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs index aaa8c7dd..9033d3b0 100644 --- a/StgSharp.Script/obj/x64/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs +++ b/StgSharp.Script/obj/x64/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file=".NETCoreApp,Version=v8.0.AssemblyAttributes.cs" -// Project: StgSharp +// Project: World // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // diff --git a/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.AssemblyInfo.cs b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.AssemblyInfo.cs index c2bbcd95..c1b99397 100644 --- a/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.AssemblyInfo.cs +++ b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.AssemblyInfo.cs @@ -14,7 +14,7 @@ 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+a6411e2f25010961d278c5bcb4a929e21b176bba")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba")] [assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Script")] [assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Script")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.sourcelink.json b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.sourcelink.json index 6fa307cc..f5139c6a 100644 --- a/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.sourcelink.json +++ b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.sourcelink.json @@ -1 +1 @@ -{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/a6411e2f25010961d278c5bcb4a929e21b176bba/*"}} \ No newline at end of file +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba/*"}} \ No newline at end of file diff --git a/StgSharp.Script/obj/x64/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/StgSharp.Script/obj/x64/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..2217181c --- /dev/null +++ b/StgSharp.Script/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/StgSharp.Script/obj/x64/Release/net8.0/StgSharp.Script.AssemblyInfo.cs b/StgSharp.Script/obj/x64/Release/net8.0/StgSharp.Script.AssemblyInfo.cs new file mode 100644 index 00000000..1185283c --- /dev/null +++ b/StgSharp.Script/obj/x64/Release/net8.0/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+74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba")] +[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/Release/net8.0/StgSharp.Script.csproj.FileListAbsolute.txt b/StgSharp.Script/obj/x64/Release/net8.0/StgSharp.Script.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..e689132e --- /dev/null +++ b/StgSharp.Script/obj/x64/Release/net8.0/StgSharp.Script.csproj.FileListAbsolute.txt @@ -0,0 +1,16 @@ +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\bin\x64\Release\net8.0\StgSharp.Script.deps.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\bin\x64\Release\net8.0\StgSharp.Script.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\bin\x64\Release\net8.0\StgSharp.Script.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\bin\x64\Release\net8.0\StgSharp.Common.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\bin\x64\Release\net8.0\StgSharp.Common.xml +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Release\net8.0\StgSharp.Script.csproj.AssemblyReference.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Release\net8.0\StgSharp.Script.GeneratedMSBuildEditorConfig.editorconfig +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Release\net8.0\StgSharp.Script.AssemblyInfoInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Release\net8.0\StgSharp.Script.AssemblyInfo.cs +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Release\net8.0\StgSharp.Script.csproj.CoreCompileInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Release\net8.0\StgSharp.Script.sourcelink.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Release\net8.0\StgSharp.D39FE6B0.Up2Date +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Release\net8.0\StgSharp.Script.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Release\net8.0\refint\StgSharp.Script.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Release\net8.0\StgSharp.Script.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Release\net8.0\ref\StgSharp.Script.dll diff --git a/StgSharp.Script/obj/x64/Release/net8.0/StgSharp.Script.sourcelink.json b/StgSharp.Script/obj/x64/Release/net8.0/StgSharp.Script.sourcelink.json new file mode 100644 index 00000000..f5139c6a --- /dev/null +++ b/StgSharp.Script/obj/x64/Release/net8.0/StgSharp.Script.sourcelink.json @@ -0,0 +1 @@ +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba/*"}} \ 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 index becfaeac..d7845156 100644 --- a/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json +++ b/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json @@ -6,6 +6,7 @@ "version": "8.0.0" }, "configProperties": { + "System.Reflection.Metadata.MetadataUpdater.IsSupported": false, "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false } } diff --git a/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.AssemblyInfo.cs b/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.AssemblyInfo.cs index b130a49b..e2dd534e 100644 --- a/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.AssemblyInfo.cs +++ b/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.AssemblyInfo.cs @@ -14,7 +14,7 @@ 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+a6411e2f25010961d278c5bcb4a929e21b176bba")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba")] [assembly: System.Reflection.AssemblyProductAttribute("StgSharp.TerminalDialogue")] [assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.TerminalDialogue")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.AssemblyInfo.cs b/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.AssemblyInfo.cs index 38da6c12..e2dd534e 100644 --- a/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.AssemblyInfo.cs +++ b/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.AssemblyInfo.cs @@ -14,7 +14,7 @@ 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+c29993fd8497704d2ddeab3e1a3f8bfa5caa8d90")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba")] [assembly: System.Reflection.AssemblyProductAttribute("StgSharp.TerminalDialogue")] [assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.TerminalDialogue")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/StgSharp.TerminalDialogue/obj/x64/Release/StgSharp.TerminalDialogue.csproj.FileListAbsolute.txt b/StgSharp.TerminalDialogue/obj/x64/Release/StgSharp.TerminalDialogue.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..5ac650a6 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/x64/Release/StgSharp.TerminalDialogue.csproj.FileListAbsolute.txt @@ -0,0 +1,21 @@ +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\Release\StgSharp.TerminalDialogue.csproj.AssemblyReference.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Release\StgSharp.TerminalDialogue.GeneratedMSBuildEditorConfig.editorconfig +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Release\StgSharp.TerminalDialogue.csproj.CoreCompileInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Release\StgSharp.TerminalDialogue.sourcelink.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Release\StgSharp.7B22D5CB.Up2Date +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Release\StgSharp.TerminalDialogue.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Release\refint\StgSharp.TerminalDialogue.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Release\StgSharp.TerminalDialogue.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Release\StgSharp.TerminalDialogue.genruntimeconfig.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Release\ref\StgSharp.TerminalDialogue.dll diff --git a/StgSharp.TerminalDialogue/obj/x64/Release/StgSharp.TerminalDialogue.sourcelink.json b/StgSharp.TerminalDialogue/obj/x64/Release/StgSharp.TerminalDialogue.sourcelink.json new file mode 100644 index 00000000..f5139c6a --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/x64/Release/StgSharp.TerminalDialogue.sourcelink.json @@ -0,0 +1 @@ +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba/*"}} \ No newline at end of file diff --git a/StgSharpDebug/ExpLinearExpressionTest.cs b/StgSharpDebug/ExpLinearExpressionTest.cs index 18669c70..a7bd02c5 100644 --- a/StgSharpDebug/ExpLinearExpressionTest.cs +++ b/StgSharpDebug/ExpLinearExpressionTest.cs @@ -144,7 +144,6 @@ namespace StgSharp REPEAT a := 1 TO 10; b := 10; END_REPEAT - """; public static void ExpLinearExpressionTest() diff --git a/StgSharpDebug/Program.cs b/StgSharpDebug/Program.cs index 6f75701a..a802caeb 100644 --- a/StgSharpDebug/Program.cs +++ b/StgSharpDebug/Program.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="Program.cs" -// Project: StgSharp +// Project: World // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -35,6 +35,7 @@ using StgSharp.Geometries; using StgSharp.Graphics; using StgSharp.Math; +using StgSharp.Model.Step; using StgSharp.MVVM; using StgSharp.MVVM.ViewModel; using StgSharp.Script; @@ -56,9 +57,13 @@ namespace StgSharp internal static unsafe void Main( string[] args ) { - StgSharp.Init(); + StepEntityLabel l1 = new StepEntityLabel( 1 ); + StepEntityLabel l2 = new StepEntityLabel( 1 ); + Console.WriteLine( l1 == l2 ); + + World.Init(); TestStepRead(); - StgSharp.Terminate( 0 ); + World.Terminate( 0 ); return; try { } @@ -66,16 +71,16 @@ namespace StgSharp { Console.WriteLine( ex ); /* - StgSharp.WriteLog($"{ex}", LogType.Error); + World.WriteLog($"{ex}", LogType.Error); if( true ) { } Dialogue.PostError( ex ); /**/ - StgSharp.Terminate( -1 ); + World.Terminate( -1 ); /**/ } finally { - StgSharp.Terminate( 0 ); + World.Terminate( 0 ); } } diff --git a/StgSharpDebug/RenderStream/Partical.cs b/StgSharpDebug/RenderStream/Partical.cs index 051f993a..c9d31f0c 100644 --- a/StgSharpDebug/RenderStream/Partical.cs +++ b/StgSharpDebug/RenderStream/Partical.cs @@ -73,17 +73,9 @@ namespace StgSharp public override bool IsContextSharable => true; - public Rectangle ButtonBounding - { - get; - private set; - } + public Rectangle ButtonBounding { get; private set; } - public TextureProvider ButtonTextureProvider - { - get; - private set; - } + public TextureProvider ButtonTextureProvider { get; private set; } //render a controlling item public void ButtonMain( IEnumerable items ) @@ -96,7 +88,8 @@ namespace StgSharp f_vao.Bind( 0 ); //GL.Assert(true); - foreach( PlainGeometryMesh mesh in items ) { + foreach( PlainGeometryMesh mesh in items ) + { //autoT.SelectTextureAndBind(mesh.TextureImage); f_t.LoadTexture( 0, mesh.TextureImage ); @@ -104,8 +97,7 @@ namespace StgSharp frameMainShader.Use(); //GL.Assert(true); - GL.DrawElements( - GeometryType.TRIANGLES, 6, TypeCode.UInt32, IntPtr.Zero ); + GL.DrawElements( GeometryType.TRIANGLES, 6, TypeCode.UInt32, IntPtr.Zero ); } //GL.ClearError(); @@ -133,15 +125,15 @@ namespace StgSharp /**/ GL.TextureImage2d( - Texture2DTarget.Texture2D, 0, ImageChannel.WithAlphaChannel, - ( uint )Width, ( uint )Height, ImageChannel.WithAlphaChannel, - PixelChannelLayout.Byte, null ); + Texture2DTarget.Texture2D, 0, ImageChannel.WithAlphaChannel, ( uint )Width, + ( uint )Height, ImageChannel.WithAlphaChannel, PixelChannelLayout.Byte, null ); /**/ //GL.Assert(false); //Console.WriteLine(GL.CheckFrameBufferStatus(FrameBufferTarget.All)); GL.ClearColor( ( 0.6f + TimePassed ) % 1.0f, 0.1f, 0.3f, 1 ); + //GL.Assert( false ); //Console.WriteLine(GL.CheckFrameBufferStatus(FrameBufferTarget.All)); @@ -151,16 +143,15 @@ namespace StgSharp //GL.Assert(false); vbo.Bind( 1 ); - vbo.WriteVectorData( - 1, buffer.CoordAndRotationSpan, BufferUsage.StreamDraw ); + vbo.WriteVectorData( 1, buffer.CoordAndRotationSpan, BufferUsage.StreamDraw ); s.Use(); NativeCamera.SetAllUniforms(); GL.SetUniformValue( time, TimePassed ); - GL.DrawElementsInstanced( - GeometryType.TRIANGLES, 6, TypeCode.UInt32, IntPtr.Zero, 100 ); + GL.DrawElementsInstanced( GeometryType.TRIANGLES, 6, TypeCode.UInt32, IntPtr.Zero, + 100 ); //Console.WriteLine(TimePassed); //GL.Assert(true); @@ -205,16 +196,14 @@ namespace StgSharp } public void RenderButton( - ButtonStatus status, - float statusBegin, - in TextureProvider provider ) + ButtonStatus status, + float statusBegin, + in TextureProvider provider ) { provider.UpdateFromImage( i ); } - internal static Vec3 DefaultRotation( - TimeSpanProvider provider, - out float rotation ) + internal static Vec3 DefaultRotation( TimeSpanProvider provider, out float rotation ) { rotation = provider.SpanLengthLowPrecession; float angle = provider.CurrentSecond * 2; @@ -230,15 +219,16 @@ namespace StgSharp //GL.Assert(true); buffer = new PlainInstancingBuffer(); - for( int i = 0; i < 10; i++ ) { + for( int i = 0; i < 10; i++ ) + { float ai = Scaler.Abs( i - 5.0f ); - for( int t = 0; t < 10; t++ ) { + for( int t = 0; t < 10; t++ ) + { float at = Scaler.Abs( t - 5.0f ); ParticleOnPlain p = new ParticleOnPlain( buffer ); ( ( IInstancing )p ).Coord = new Vec3( - ( ( ( -5 ) + i ) * 0.2f ) + 0.1f, - ( ( ( -5 ) + t ) * 0.2f ) + 0.1f, 0 ); + ( ( ( -5 ) + i ) * 0.2f ) + 0.1f, ( ( ( -5 ) + t ) * 0.2f ) + 0.1f, 0 ); ( ( IInstancing )p ).Scale = Scaler.MinOf( i, t ) * 0.15f; ( ( IInstancing )p ).Motion = new GeometryMotion( @@ -287,24 +277,18 @@ namespace StgSharp vao.Bind( 0 ); vbo.WriteVectorData( 0, rec.VertexStream, BufferUsage.StaticDraw ); ebo.SetValue( 0, rec.VertexIndices, BufferUsage.StaticDraw ); - vao.SetVertexAttribute( - 0, 3, TypeCode.Single, false, 4 * sizeof( float ), 0 ); + vao.SetVertexAttribute( 0, 3, TypeCode.Single, false, 4 * sizeof( float ), 0 ); - vbo.WriteVectorData( - 1, buffer.CoordAndRotationSpan, BufferUsage.StreamDraw ); + vbo.WriteVectorData( 1, buffer.CoordAndRotationSpan, BufferUsage.StreamDraw ); + vao.SetVertexAttribute( 1, 3, TypeCode.Single, false, 4 * sizeof( float ), 0 ); vao.SetVertexAttribute( - 1, 3, TypeCode.Single, false, 4 * sizeof( float ), 0 ); - vao.SetVertexAttribute( - 2, 1, TypeCode.Single, false, 4 * sizeof( float ), - 3 * sizeof( float ) ); + 2, 1, TypeCode.Single, false, 4 * sizeof( float ), 3 * sizeof( float ) ); GL.VertexAttributeDivisor( 1, 1 ); GL.VertexAttributeDivisor( 2, 1 ); - vbo.WriteScalerData( - 2, buffer.ScalingSpan, BufferUsage.StaticDraw ); - vao.SetVertexAttribute( - 3, 1, TypeCode.Single, false, sizeof( float ), 0 ); + vbo.WriteScalerData( 2, buffer.ScalingSpan, BufferUsage.StaticDraw ); + vao.SetVertexAttribute( 3, 1, TypeCode.Single, false, sizeof( float ), 0 ); GL.VertexAttributeDivisor( 3, 1 ); @@ -326,33 +310,27 @@ namespace StgSharp t = CreateTexture( 1 ); t.Bind2D( 0 ); GL.TextureImage2d( - Texture2DTarget.Texture2D, 0, ImageChannel.WithAlphaChannel, - ( uint )Width, ( uint )Height, ImageChannel.WithAlphaChannel, - PixelChannelLayout.Byte, null! ); + Texture2DTarget.Texture2D, 0, ImageChannel.WithAlphaChannel, ( uint )Width, + ( uint )Height, ImageChannel.WithAlphaChannel, PixelChannelLayout.Byte, null! ); t.Set2dWrapProperty( 0, TextureWrap.Repeat, TextureWrap.Repeat ); - t.Set2dFilterProperty( - 0, TextureFilter.Linear, TextureFilter.Linear ); + t.Set2dFilterProperty( 0, TextureFilter.Linear, TextureFilter.Linear ); //GL.Assert(true); GL.FrameBufferTexture2d( - FrameBufferTarget.All, glAttachment.Color( 0 ), - Texture2DTarget.Texture2D, t[ 0 ], 0 ); + FrameBufferTarget.All, glAttachment.Color( 0 ), Texture2DTarget.Texture2D, t[ 0 ], + 0 ); - GL.SetRenderBufferStorage( - RenderBufferInternalFormat.Depth24_Stencil8, this.Size ); - GL.CombineFrameBufferRenderBuffer( - FrameBufferAttachment.DepthAndStencil, rbo[ 0 ] ); + GL.SetRenderBufferStorage( RenderBufferInternalFormat.Depth24_Stencil8, this.Size ); + GL.CombineFrameBufferRenderBuffer( FrameBufferAttachment.DepthAndStencil, rbo[ 0 ] ); - Console.WriteLine( - GL.CheckFrameBufferStatus( FrameBufferTarget.All ) ); + Console.WriteLine( GL.CheckFrameBufferStatus( FrameBufferTarget.All ) ); FrameBuffer.BindNull(); //GL.Assert(true); int streamLength = this.Width * this.Height * 4; byte[] imageStream = new byte[streamLength]; - i = Image.FromMemory( - this.Size, ImageChannel.WithAlphaChannel, imageStream ); + i = Image.FromMemory( this.Size, ImageChannel.WithAlphaChannel, imageStream ); time = s.GetUniform( "time" ); @@ -363,12 +341,10 @@ namespace StgSharp (1f, 0f), (0f, 0f) }; - ButtonBounding = new Rectangle( - -0.9f, 0.9f, 0.9f, 0.9f, 0.9f, -0.9f, -0.9f, -0.9f ); + ButtonBounding = new Rectangle( -0.9f, 0.9f, 0.9f, 0.9f, 0.9f, -0.9f, -0.9f, -0.9f ); //GL.Assert(true); - ButtonTextureProvider = new TextureProvider( - i, buttonTextureCoordArray ); + ButtonTextureProvider = new TextureProvider( i, buttonTextureCoordArray ); f_vao = CreateVertexArray( 1 ); f_vbo = CreateVertexBuffer( 2 ); @@ -378,35 +354,29 @@ namespace StgSharp f_vao.Bind( 0 ); f_ebo.Bind( 0 ); - f_ebo.SetValue( - 0, ButtonBounding.VertexIndices, BufferUsage.StaticDraw ); + f_ebo.SetValue( 0, ButtonBounding.VertexIndices, BufferUsage.StaticDraw ); //GL.Assert(true); f_vbo.Bind( 0 ); - f_vbo.WriteVectorData( - 0, ButtonBounding.VertexStream, BufferUsage.StaticDraw ); - f_vao.SetVertexAttribute( - 0, 3, TypeCode.Single, false, 4 * sizeof( float ), 0 ); + f_vbo.WriteVectorData( 0, ButtonBounding.VertexStream, BufferUsage.StaticDraw ); + f_vao.SetVertexAttribute( 0, 3, TypeCode.Single, false, 4 * sizeof( float ), 0 ); //GL.Assert(true); f_vbo.Bind( 1 ); - f_vbo.WriteVectorData( - 1, buttonTextureCoordArray, BufferUsage.StaticDraw ); - f_vao.SetVertexAttribute( - 1, 3, TypeCode.Single, false, 4 * sizeof( float ), 0 ); + f_vbo.WriteVectorData( 1, buttonTextureCoordArray, BufferUsage.StaticDraw ); + f_vao.SetVertexAttribute( 1, 3, TypeCode.Single, false, 4 * sizeof( float ), 0 ); //GL.Assert(true); autoT = CreateAutoTexture( 4 ); autoT.DefaultTextureProperty = new TextureProperty( - TextureFilter.Nearest, TextureFilter.Nearest, - TextureWrap.Repeat, TextureWrap.Repeat ); + TextureFilter.Nearest, TextureFilter.Nearest, TextureWrap.Repeat, + TextureWrap.Repeat ); f_t = CreateTexture( 1 ); f_t.Bind2D( 0 ); f_t.Set2dWrapProperty( 0, TextureWrap.Repeat, TextureWrap.Repeat ); - f_t.Set2dFilterProperty( - 0, TextureFilter.Nearest, TextureFilter.Nearest ); + f_t.Set2dFilterProperty( 0, TextureFilter.Nearest, TextureFilter.Nearest ); //GL.Assert(true); f_t.ActivateAs( TextureUnit.Unit1 ); diff --git a/StgSharpDebug/SimdDemo.cs b/StgSharpDebug/SimdDemo.cs new file mode 100644 index 00000000..5762fd1e --- /dev/null +++ b/StgSharpDebug/SimdDemo.cs @@ -0,0 +1,15 @@ +using StgSharp.Math; + +namespace StgSharp +{ + public static class SimdDemo + { + public static void TestMethod() + { + Matrix44 m1 = new Matrix44(); + Matrix44 m2 = new Matrix44(); + var m3 = m1 * m2; + Console.WriteLine(m3[0,0]); + } + } +} \ No newline at end of file diff --git a/StgSharpDebug/StepReadingTest.cs b/StgSharpDebug/StepReadingTest.cs index 277726ef..74cd9c99 100644 --- a/StgSharpDebug/StepReadingTest.cs +++ b/StgSharpDebug/StepReadingTest.cs @@ -29,6 +29,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- using StgSharp.Model.Step; +using StgSharp.PipeLine; using StgSharp.Script.Express; using System; @@ -50,9 +51,23 @@ namespace StgSharp private static void TestStepRead() { ExpressCompile.InitCompile(); - if( StepReader.FromFile( stepFile[ 0 ], out StepReader reader ) ) + if( StepReader.FromFile( stepFile[ 1 ], out StepReader reader ) ) { StepModel model = reader.ReadToModelSingleThread(); + PipeLineRunner.SetMaxTaskCount( 1 ); + string[] info = model.ShowStructure( int.MaxValue ); + FileStream fs = File.Open( "D:\\struct.txt", FileMode.Create, + FileAccess.ReadWrite ); + StreamWriter sw = new StreamWriter( fs ); + foreach( string line in info ) + { + sw.WriteLine( line ); + Console.WriteLine( line ); + } + sw.Dispose(); + fs.Dispose(); + + //model.InitEntity(); reader.Dispose(); } } diff --git a/StgSharpDebug/TestFileRead.cs b/StgSharpDebug/TestFileRead.cs index 6ba42af4..bc9d24a0 100644 --- a/StgSharpDebug/TestFileRead.cs +++ b/StgSharpDebug/TestFileRead.cs @@ -48,8 +48,7 @@ namespace StgSharp ExpSchemaSource schemaSource = new ExpSchemaSource(); schemaSource.ReadSchema( reader ); - ExpSchema schema = schemaSource.Compile( - ExpressCompileOption.Translate ); + ExpSchema schema = schemaSource.Compile( ExpressCompileOption.Translate ); } } diff --git a/StgSharpDebug/TestRender.cs b/StgSharpDebug/TestRender.cs index cc0f1d94..9c36f368 100644 --- a/StgSharpDebug/TestRender.cs +++ b/StgSharpDebug/TestRender.cs @@ -45,8 +45,8 @@ namespace StgSharp public static void TestRender() { - StgSharp.InitGL( 4, 6 ); - StgSharp.GlobalSetting.VSyncActivated = false; + World.InitGL( 4, 6 ); + World.GlobalSetting.VSyncActivated = false; ViewPort vp = new ViewPort( 800, 600, "Hello StgSharp!", IntPtr.Zero ); @@ -57,7 +57,7 @@ namespace StgSharp mainModel.UseViewModel( "MainView" ); - StgSharp.Terminate( 0 ); + World.Terminate( 0 ); } } diff --git a/StgSharpDebug/View/Control.cs b/StgSharpDebug/View/Control.cs index c5b8cb66..2347ee78 100644 --- a/StgSharpDebug/View/Control.cs +++ b/StgSharpDebug/View/Control.cs @@ -29,7 +29,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- using StgSharp.Controlling.UsrActivity; -using StgSharp.MVVM.View; +using StgSharp.MVVM; using System; using System.Collections.Generic; @@ -48,7 +48,7 @@ namespace StgSharp public Control( ViewMain view ) : base( view ) { } public override void CustomizedInitialize( - Func keyRegister ) { } + Func keyRegister ) { } public override bool ValidateInitializing() { diff --git a/StgSharpDebug/View/Design.cs b/StgSharpDebug/View/Design.cs index b174c17e..0ae04fbc 100644 --- a/StgSharpDebug/View/Design.cs +++ b/StgSharpDebug/View/Design.cs @@ -48,17 +48,9 @@ namespace StgSharp public partial class ViewMain { - internal DemoButtonGroup Group - { - get; - set; - } + internal DemoButtonGroup Group { get; set; } - internal TriggerButton OnlyButton - { - get; - set; - } + internal TriggerButton OnlyButton { get; set; } internal class Design : ViewDesigner { @@ -74,8 +66,7 @@ namespace StgSharp new KeyTrigger( KeyboardKey.Down, KeyStatus.PRESS ), new KeyTrigger( KeyboardKey.Enter, KeyStatus.PRESS ) ); Binding.OnlyButton = CreateKeyboardButton( - Binding.Stream.ButtonBounding, - Binding.Stream.ButtonTextureProvider, true ); + Binding.Stream.ButtonBounding, Binding.Stream.ButtonTextureProvider, true ); Binding.OnlyButton.RenderButtonTexture += Binding.Stream.RenderButton; } diff --git a/StgSharpDebug/View/NewRender.cs b/StgSharpDebug/View/NewRender.cs index 63346a2e..8a23ac19 100644 --- a/StgSharpDebug/View/NewRender.cs +++ b/StgSharpDebug/View/NewRender.cs @@ -44,11 +44,7 @@ namespace StgSharp public partial class ViewMain { - public ParticleRenderStream Stream - { - get; - set; - } + public ParticleRenderStream Stream { get; set; } private class NewRender : ViewRender { diff --git a/StgSharpDebug/View/ViewMain.cs b/StgSharpDebug/View/ViewMain.cs index b057a8b9..151413dd 100644 --- a/StgSharpDebug/View/ViewMain.cs +++ b/StgSharpDebug/View/ViewMain.cs @@ -30,7 +30,6 @@ //----------------------------------------------------------------------- using StgSharp.Graphics; using StgSharp.MVVM; -using StgSharp.MVVM.View; using StgSharp.MVVM.ViewModel; using System; @@ -53,8 +52,7 @@ namespace StgSharp _databindingIndexMap = new Dictionary(); } - public override void CustomizedInitialize( - [NotNull]ViewModelBase viewModelBinding ) + public override void CustomizedInitialize( [NotNull]ViewModelBase viewModelBinding ) { Designer = new Design( this ); Responder = new Control( this ); @@ -65,21 +63,21 @@ namespace StgSharp Responder.Initialize( viewModelBinding.MethodLookup ); } - public override bool TryGetObjectReference( - string name, - out DataBindingEntry entry ) + public override bool TryGetObjectReference( string name, out DataBindingEntry entry ) { if( _databindingIndexMap.TryGetValue( name, out entry ) ) { return true; } - try { + try + { entry = name switch { _ => default( DataBindingEntry ), }; return !entry.ExactEqual( default( DataBindingEntry ) ); } - catch( Exception ) { + catch( Exception ) + { entry = default( DataBindingEntry ); return false; } diff --git a/StgSharpDebug/ViewModelMain.cs b/StgSharpDebug/ViewModelMain.cs index 1b321862..bf04a5ca 100644 --- a/StgSharpDebug/ViewModelMain.cs +++ b/StgSharpDebug/ViewModelMain.cs @@ -49,15 +49,12 @@ namespace StgSharp public ViewModelMain( ViewPort vp ) : base( vp, 60 ) { - dataBindingEntryIndexMap = new Dictionary( - ); + dataBindingEntryIndexMap = new Dictionary(); } public override void CustomizeInitialize() { } - public override bool TryGetObjectReference( - string name, - out DataBindingEntry entry ) + public override bool TryGetObjectReference( string name, out DataBindingEntry entry ) { if( dataBindingEntryIndexMap.TryGetValue( name, out entry ) ) { return true; diff --git a/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.AssemblyInfo.cs b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.AssemblyInfo.cs index 2596b8a1..8de793fe 100644 --- a/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.AssemblyInfo.cs +++ b/StgSharpDebug/obj/x64/Debug/net8.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+a6411e2f25010961d278c5bcb4a929e21b176bba")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba")] [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/net8.0/StgSharpDebug.sourcelink.json b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.sourcelink.json index 6fa307cc..f5139c6a 100644 --- a/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.sourcelink.json +++ b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.sourcelink.json @@ -1 +1 @@ -{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/a6411e2f25010961d278c5bcb4a929e21b176bba/*"}} \ No newline at end of file +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba/*"}} \ No newline at end of file diff --git a/StgSharpDebug/obj/x64/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/StgSharpDebug/obj/x64/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..2217181c --- /dev/null +++ b/StgSharpDebug/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/StgSharpDebug/obj/x64/Release/net8.0/StgSharpDebug.AssemblyInfo.cs b/StgSharpDebug/obj/x64/Release/net8.0/StgSharpDebug.AssemblyInfo.cs new file mode 100644 index 00000000..01e77e6a --- /dev/null +++ b/StgSharpDebug/obj/x64/Release/net8.0/StgSharpDebug.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +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+74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharpDebug")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharpDebug")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/StgSharpDebug/obj/x64/Release/net8.0/StgSharpDebug.GlobalUsings.g.cs b/StgSharpDebug/obj/x64/Release/net8.0/StgSharpDebug.GlobalUsings.g.cs new file mode 100644 index 00000000..8578f3d0 --- /dev/null +++ b/StgSharpDebug/obj/x64/Release/net8.0/StgSharpDebug.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/StgSharpDevelop.sln b/StgSharpDevelop.sln index 0d7be672..28c58083 100644 --- a/StgSharpDevelop.sln +++ b/StgSharpDevelop.sln @@ -26,12 +26,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StgSharp.TerminalDialogue", EndProject 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}") = "StgSharp.Generator", "StgSharp.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}") = "StgSharp.Model", "StgSharp.Model\StgSharp.Model.csproj", "{D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}" EndProject Global @@ -81,14 +75,6 @@ Global {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Release|Any CPU.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 - {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|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|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|x64 diff --git a/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json b/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json index becfaeac..d7845156 100644 --- a/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json +++ b/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json @@ -6,6 +6,7 @@ "version": "8.0.0" }, "configProperties": { + "System.Reflection.Metadata.MetadataUpdater.IsSupported": false, "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false } }