daily update on 20231104 by nitload youmu

This commit is contained in:
Nitload
2023-11-04 07:28:34 +08:00
parent 588a61d514
commit 9933ced8f4
368 changed files with 171636 additions and 109434 deletions
@@ -21,9 +21,10 @@
<PropertyGroup Label="Globals">
<VCProjectVersion>17.0</VCProjectVersion>
<Keyword>Win32Proj</Keyword>
<ProjectGuid>{ec78307c-6a17-486f-a26b-3a6bf1e1005f}</ProjectGuid>
<ProjectGuid>{00ef73c2-cc73-4478-884e-08979f4a429a}</ProjectGuid>
<RootNamespace>StgSharpGraphic</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
<ProjectName>StgSharpC</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
@@ -72,9 +73,8 @@
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<TargetName>StgSharpGraphic</TargetName>
<IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);$(ProjectDir)include</IncludePath>
<OutDir>$(SolutionDir)</OutDir>
<ExternalIncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);$(ProjectDir)include</ExternalIncludePath>
<LibraryPath>$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64);$(ProjectDir)lib\glfw</LibraryPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<TargetName>StgSharpGraphic</TargetName>
@@ -83,10 +83,9 @@
<TargetName>StgSharpGraphic</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<TargetName>StgSharpGraphic</TargetName>
<ExternalIncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);$(ProjectDir)include</ExternalIncludePath>
<TargetName>StgSharpC</TargetName>
<IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);$(ProjectDir)include</IncludePath>
<OutDir>$(SolutionDir)</OutDir>
<LibraryPath>$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64);$(ProjectDir)lib\glfw</LibraryPath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
@@ -122,23 +121,20 @@
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_GLFW_BUILD_DLL;_DEBUG;STGSHARPGRAPHIC_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>GLFW_BUILD_DLL;_DEBUG;STGSHARPGRAPHIC_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp20</LanguageStandard>
<LanguageStandard_C>stdc17</LanguageStandard_C>
<RemoveUnreferencedCodeData>false</RemoveUnreferencedCodeData>
<AssemblerOutput>All</AssemblerOutput>
<CompileAs>CompileAsC</CompileAs>
<GenerateSourceDependencies>true</GenerateSourceDependencies>
<TranslateIncludes>true</TranslateIncludes>
<ShowIncludes>true</ShowIncludes>
<AssemblerOutput>All</AssemblerOutput>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableUAC>false</EnableUAC>
<AdditionalDependencies>glfw3.lib;OpenGL32.lib;$(CoreLibraryDependencies);%(AdditionalDependencies)</AdditionalDependencies>
<ShowProgress>LinkVerbose</ShowProgress>
<AdditionalLibraryDirectories>$(ProjectDir)lib\glfw;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalLibraryDirectories>$(ProjectDir)lib</AdditionalLibraryDirectories>
<AdditionalDependencies>OpenGL32.lib;glfw3.lib;$(CoreLibraryDependencies);%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
@@ -147,15 +143,14 @@
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_GLFW_BUILD_DLL;GLAD_GLAPI_EXPORT;NDEBUG;STGSHARPGRAPHIC_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_GLFW_BUILD_DLL;NDEBUG;STGSHARPGRAPHIC_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp20</LanguageStandard>
<LanguageStandard_C>stdc17</LanguageStandard_C>
<RemoveUnreferencedCodeData>false</RemoveUnreferencedCodeData>
<AssemblerOutput>All</AssemblerOutput>
<CompileAs>CompileAsC</CompileAs>
<GenerateSourceDependencies>true</GenerateSourceDependencies>
<TranslateIncludes>true</TranslateIncludes>
<ShowIncludes>true</ShowIncludes>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
@@ -163,15 +158,32 @@
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableUAC>false</EnableUAC>
<AdditionalDependencies>glfw3.lib;OpenGL32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ShowProgress>LinkVerbose</ShowProgress>
<AdditionalLibraryDirectories>$(ProjectDir)lib\glfw;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalLibraryDirectories>$(ProjectDir)lib</AdditionalLibraryDirectories>
<AdditionalDependencies>OpenGL32.lib;glfw3dll.lib;glfw3.lib;$(CoreLibraryDependencies);%(AdditionalDependencies)</AdditionalDependencies>
<MapExports>true</MapExports>
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<Library Include="lib\glfw\glfw3.lib" />
<Library Include="lib\glfw\glfw3dll.lib" />
<Library Include="lib\glfw\glfw3_mt.lib" />
<ClInclude Include="include\glad_gl.h" />
<ClInclude Include="include\glad_glsc2.h" />
<ClInclude Include="include\glad_glx.h" />
<ClInclude Include="include\glad_wgl.h" />
<ClInclude Include="include\glfw3.h" />
<ClInclude Include="include\glfw3native.h" />
<ClInclude Include="include\glfw_internal.h" />
<ClInclude Include="include\glfw_mappings.h" />
<ClInclude Include="include\glfw_null_joystick.h" />
<ClInclude Include="include\glfw_null_platform.h" />
<ClInclude Include="include\glfw_platform.h" />
<ClInclude Include="include\glfw_win32_joystick.h" />
<ClInclude Include="include\glfw_win32_platform.h" />
<ClInclude Include="include\glfw_win32_thread.h" />
<ClInclude Include="include\glfw_win32_time.h" />
<ClInclude Include="include\khrplatform.h" />
<ClInclude Include="include\ssgc_framework.h" />
<ClInclude Include="include\ssgc_internal.h" />
<ClInclude Include="include\StgSharpC.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="code\debuger.c" />
@@ -179,22 +191,37 @@
<ClCompile Include="code\GLAD\gl.c" />
<ClCompile Include="code\GLAD\glsc2.c" />
<ClCompile Include="code\GLAD\wgl.c" />
<ClCompile Include="code\glfw\context.c" />
<ClCompile Include="code\glfw\egl_context.c" />
<ClCompile Include="code\glfw\init.c" />
<ClCompile Include="code\glfw\input.c" />
<ClCompile Include="code\glfw\monitor.c" />
<ClCompile Include="code\glfw\null_init.c" />
<ClCompile Include="code\glfw\null_joystick.c" />
<ClCompile Include="code\glfw\null_monitor.c" />
<ClCompile Include="code\glfw\null_window.c" />
<ClCompile Include="code\glfw\osmesa_context.c" />
<ClCompile Include="code\glfw\platform.c" />
<ClCompile Include="code\glfw\vulkan.c" />
<ClCompile Include="code\glfw\wgl_context.c" />
<ClCompile Include="code\glfw\win32_init.c" />
<ClCompile Include="code\glfw\win32_joystick.c" />
<ClCompile Include="code\glfw\win32_module.c" />
<ClCompile Include="code\glfw\win32_monitor.c" />
<ClCompile Include="code\glfw\win32_thread.c" />
<ClCompile Include="code\glfw\win32_time.c" />
<ClCompile Include="code\glfw\win32_window.c" />
<ClCompile Include="code\glfw\window.c" />
<ClCompile Include="code\linear.c" />
<ClCompile Include="code\mat2.c" />
<ClCompile Include="code\mat3.c" />
<ClCompile Include="code\mat4.c" />
<ClCompile Include="code\StgSharpGraphic.c" />
<ClCompile Include="code\StgSharpC.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="include\framework.h" />
<ClInclude Include="include\glad\gl.h" />
<ClInclude Include="include\glad\glsc2.h" />
<ClInclude Include="include\glad\wgl.h" />
<ClInclude Include="include\glfw\glfw3.h" />
<ClInclude Include="include\glfw\glfw3native.h" />
<ClInclude Include="include\KHR\khrplatform.h" />
<ClInclude Include="include\SSGinternal.h" />
<ClInclude Include="include\StgSharpGraphic.h" />
<Library Include="lib\glfw3.lib" />
<Library Include="lib\glfw3dll.lib" />
<Library Include="lib\glfw3_mt.lib" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
@@ -13,29 +13,83 @@
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
<Filter Include="源文件\glad">
<UniqueIdentifier>{367d2774-6f1b-4d34-b195-5da1e963aa17}</UniqueIdentifier>
</Filter>
<Filter Include="头文件\KHR">
<UniqueIdentifier>{0eabbe8c-0fe2-49e0-b180-5c656f8baa3f}</UniqueIdentifier>
<Filter Include="头文件\glad">
<UniqueIdentifier>{11bb7d6d-b350-4396-81cf-94252c7ac868}</UniqueIdentifier>
</Filter>
<Filter Include="头文件\glfw">
<UniqueIdentifier>{dca3f640-a400-4495-9313-ccbcb997db12}</UniqueIdentifier>
<UniqueIdentifier>{0f11315e-afa5-47bd-8cda-99fa20df04d9}</UniqueIdentifier>
</Filter>
<Filter Include="头文件\glad">
<UniqueIdentifier>{3a48b22a-3d1b-48b2-8051-e1d8bf37a049}</UniqueIdentifier>
<Filter Include="头文件\KHRplatform">
<UniqueIdentifier>{832aa80e-51b7-4954-aafc-d3d4aaaa09ec}</UniqueIdentifier>
</Filter>
<Filter Include="源文件\glad">
<UniqueIdentifier>{d182c7fb-ff2f-4395-82ce-db4624c3e549}</UniqueIdentifier>
</Filter>
<Filter Include="资源文件\glfw">
<UniqueIdentifier>{0384ee02-17f6-48b6-b1c6-7717af12fea9}</UniqueIdentifier>
</Filter>
<Filter Include="源文件\glfw">
<UniqueIdentifier>{26b176df-8c06-49d8-ae07-995d3b64504a}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<Library Include="lib\glfw\glfw3.lib">
<Filter>资源文件</Filter>
</Library>
<Library Include="lib\glfw\glfw3_mt.lib">
<Filter>资源文件</Filter>
</Library>
<Library Include="lib\glfw\glfw3dll.lib">
<Filter>资源文件</Filter>
</Library>
<ClInclude Include="include\glfw_internal.h">
<Filter>头文件\glfw</Filter>
</ClInclude>
<ClInclude Include="include\glfw_mappings.h">
<Filter>头文件\glfw</Filter>
</ClInclude>
<ClInclude Include="include\glfw_platform.h">
<Filter>头文件\glfw</Filter>
</ClInclude>
<ClInclude Include="include\glfw_win32_joystick.h">
<Filter>头文件\glfw</Filter>
</ClInclude>
<ClInclude Include="include\glfw_win32_platform.h">
<Filter>头文件\glfw</Filter>
</ClInclude>
<ClInclude Include="include\glfw_win32_thread.h">
<Filter>头文件\glfw</Filter>
</ClInclude>
<ClInclude Include="include\glfw_win32_time.h">
<Filter>头文件\glfw</Filter>
</ClInclude>
<ClInclude Include="include\glfw3.h">
<Filter>头文件\glfw</Filter>
</ClInclude>
<ClInclude Include="include\glfw3native.h">
<Filter>头文件\glfw</Filter>
</ClInclude>
<ClInclude Include="include\glad_gl.h">
<Filter>头文件\glad</Filter>
</ClInclude>
<ClInclude Include="include\glad_glsc2.h">
<Filter>头文件\glad</Filter>
</ClInclude>
<ClInclude Include="include\glad_glx.h">
<Filter>头文件\glad</Filter>
</ClInclude>
<ClInclude Include="include\glad_wgl.h">
<Filter>头文件\glad</Filter>
</ClInclude>
<ClInclude Include="include\ssgc_framework.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="include\ssgc_internal.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="include\StgSharpC.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="include\glfw_null_joystick.h">
<Filter>头文件\glfw</Filter>
</ClInclude>
<ClInclude Include="include\glfw_null_platform.h">
<Filter>头文件\glfw</Filter>
</ClInclude>
<ClInclude Include="include\khrplatform.h">
<Filter>头文件\KHRplatform</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="code\debuger.c">
@@ -56,7 +110,7 @@
<ClCompile Include="code\mat4.c">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="code\StgSharpGraphic.c">
<ClCompile Include="code\StgSharpC.c">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="code\GLAD\gl.c">
@@ -68,34 +122,79 @@
<ClCompile Include="code\GLAD\wgl.c">
<Filter>源文件\glad</Filter>
</ClCompile>
<ClCompile Include="code\glfw\context.c">
<Filter>源文件\glfw</Filter>
</ClCompile>
<ClCompile Include="code\glfw\egl_context.c">
<Filter>源文件\glfw</Filter>
</ClCompile>
<ClCompile Include="code\glfw\init.c">
<Filter>源文件\glfw</Filter>
</ClCompile>
<ClCompile Include="code\glfw\input.c">
<Filter>源文件\glfw</Filter>
</ClCompile>
<ClCompile Include="code\glfw\monitor.c">
<Filter>源文件\glfw</Filter>
</ClCompile>
<ClCompile Include="code\glfw\null_init.c">
<Filter>源文件\glfw</Filter>
</ClCompile>
<ClCompile Include="code\glfw\null_joystick.c">
<Filter>源文件\glfw</Filter>
</ClCompile>
<ClCompile Include="code\glfw\null_monitor.c">
<Filter>源文件\glfw</Filter>
</ClCompile>
<ClCompile Include="code\glfw\null_window.c">
<Filter>源文件\glfw</Filter>
</ClCompile>
<ClCompile Include="code\glfw\osmesa_context.c">
<Filter>源文件\glfw</Filter>
</ClCompile>
<ClCompile Include="code\glfw\platform.c">
<Filter>源文件\glfw</Filter>
</ClCompile>
<ClCompile Include="code\glfw\vulkan.c">
<Filter>源文件\glfw</Filter>
</ClCompile>
<ClCompile Include="code\glfw\wgl_context.c">
<Filter>源文件\glfw</Filter>
</ClCompile>
<ClCompile Include="code\glfw\win32_init.c">
<Filter>源文件\glfw</Filter>
</ClCompile>
<ClCompile Include="code\glfw\win32_joystick.c">
<Filter>源文件\glfw</Filter>
</ClCompile>
<ClCompile Include="code\glfw\win32_module.c">
<Filter>源文件\glfw</Filter>
</ClCompile>
<ClCompile Include="code\glfw\win32_monitor.c">
<Filter>源文件\glfw</Filter>
</ClCompile>
<ClCompile Include="code\glfw\win32_thread.c">
<Filter>源文件\glfw</Filter>
</ClCompile>
<ClCompile Include="code\glfw\win32_time.c">
<Filter>源文件\glfw</Filter>
</ClCompile>
<ClCompile Include="code\glfw\win32_window.c">
<Filter>源文件\glfw</Filter>
</ClCompile>
<ClCompile Include="code\glfw\window.c">
<Filter>源文件\glfw</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="include\framework.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="include\SSGinternal.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="include\StgSharpGraphic.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="include\KHR\khrplatform.h">
<Filter>头文件\KHR</Filter>
</ClInclude>
<ClInclude Include="include\glfw\glfw3.h">
<Filter>头文件\glfw</Filter>
</ClInclude>
<ClInclude Include="include\glfw\glfw3native.h">
<Filter>头文件\glfw</Filter>
</ClInclude>
<ClInclude Include="include\glad\gl.h">
<Filter>头文件\glad</Filter>
</ClInclude>
<ClInclude Include="include\glad\glsc2.h">
<Filter>头文件\glad</Filter>
</ClInclude>
<ClInclude Include="include\glad\wgl.h">
<Filter>头文件\glad</Filter>
</ClInclude>
<Library Include="lib\glfw3.lib">
<Filter>资源文件\glfw</Filter>
</Library>
<Library Include="lib\glfw3_mt.lib">
<Filter>资源文件\glfw</Filter>
</Library>
<Library Include="lib\glfw3dll.lib">
<Filter>资源文件\glfw</Filter>
</Library>
</ItemGroup>
</Project>
+1 -1
View File
@@ -4,7 +4,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "glad/gl.h"
#include "glad_gl.h"
#ifndef GLAD_IMPL_UTIL_C_
#define GLAD_IMPL_UTIL_C_
+1 -1
View File
@@ -4,7 +4,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "glad/glsc2.h"
#include "glad_glsc2.h"
#ifndef GLAD_IMPL_UTIL_C_
#define GLAD_IMPL_UTIL_C_
+1 -1
View File
@@ -4,7 +4,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "GLAD/wgl.h"
#include "GLAD_wgl.h"
#ifndef GLAD_IMPL_UTIL_C_
#define GLAD_IMPL_UTIL_C_
@@ -0,0 +1,82 @@
// StgShqrpGraphic.cpp : 定义 DLL 的导出函数。
//
#include "ssgc_framework.h"
#include "glad_gl.h"
#include <stdio.h>
#include "StgSharpC.h"
extern char* infolog[512] = { 0 };
GladGLContext* currentContext;
glfwContext* glfw;
void printShaderCode(char* const* code)
{
printf(*code);
}
SSCAPI void _cdecl initGL(int majorVersion, int minorVersion)
{
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, majorVersion);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, minorVersion);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
#ifdef __APPLE__
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
#endif
}
SSCAPI unsigned int loadShaderCode(char* const shaderCode, GLint shadertype)
{
unsigned int shader = currentContext->CreateShader(shadertype);
currentContext->ShaderSource(shader, 1, &shaderCode, NULL);
currentContext->CompileShader(shader);
int success;
currentContext->GetShaderiv(shader, GL_COMPILE_STATUS, &success);
if (!success)
{
currentContext->GetShaderInfoLog(shader, 512, NULL, infolog);
return 0;
}
else
{
return shader;
}
}
SSCAPI unsigned int linkShaderProgram(GLuint shaderProgram)
{
currentContext->LinkProgram(shaderProgram);
int success;
currentContext->GetProgramiv(shaderProgram, GL_LINK_STATUS, &success);
if (!success)
{
currentContext->GetProgramInfoLog(shaderProgram, 512, NULL, infolog);
return 0;
}
else
{
return shaderProgram;
}
}
char* _cdecl readLog()
{
infolog[511] = '\0';
return &infolog;
}
void setCurrentGLContxt(GladGLContext* contextPtr)
{
currentContext = contextPtr;
}
@@ -1,210 +0,0 @@
// StgShqrpGraphic.cpp : 定义 DLL 的导出函数。
//
#include "framework.h"
#include "glad/gl.h"
#include <stdio.h>
#include "StgSharpGraphic.h"
extern char* infolog[512] = { 0 };
GladGLContext* currentContext;
glfwContext* glfw;
void printShaderCode(char* const* code)
{
printf(*code);
}
SSGC_API glfwContext* _cdecl initGL(int majorVersion, int minorVersion, glfwContext* ptr)
{
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, majorVersion);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, minorVersion);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
#ifdef __APPLE__
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
#endif
glfw = ptr;
#pragma region loadapi
glfw->Init = glfwInit;
glfw->Terminate = glfwTerminate;
glfw->InitHint = glfwInitHint;
glfw->GetVersion = glfwGetVersion;
glfw->GetVersionString = glfwGetVersionString;
glfw->GetError = glfwGetError;
glfw->SetErrorCallback = glfwSetErrorCallback;
glfw->GetMonitors = glfwGetMonitors;
glfw->GetPrimaryMonitor = glfwGetPrimaryMonitor;
glfw->GetMonitorPos = glfwGetMonitorPos;
glfw->GetMonitorWorkarea = glfwGetMonitorWorkarea;
glfw->GetMonitorPhysicalSize = glfwGetMonitorPhysicalSize;
glfw->GetMonitorContentScale = glfwGetMonitorContentScale;
glfw->GetMonitorName = glfwGetMonitorName;
glfw->SetMonitorUserPointer = glfwSetMonitorUserPointer;
glfw->GetMonitorUserPointer = glfwGetMonitorUserPointer;
glfw->SetMonitorCallback = glfwSetMonitorCallback;
glfw->GetVideoModes = glfwGetVideoModes;
glfw->GetVideoMode = glfwGetVideoMode;
glfw->SetGamma = glfwSetGamma;
glfw->GetGammaRamp = glfwGetGammaRamp;
glfw->SetGammaRamp = glfwSetGammaRamp;
glfw->DefaultWindowHints = glfwDefaultWindowHints;
glfw->WindowHint = glfwWindowHint;
glfw->WindowHintString = glfwWindowHintString;
glfw->CreateWindowProc = glfwCreateWindow;
glfw->DestroyWindow = glfwDestroyWindow;
glfw->WindowShouldClose = glfwWindowShouldClose;
glfw->SetWindowShouldClose = glfwSetWindowShouldClose;
glfw->SetWindowTitle = glfwSetWindowTitle;
glfw->SetWindowIcon = glfwSetWindowIcon;
glfw->GetWindowPos = glfwGetWindowPos;
glfw->SetWindowPos = glfwSetWindowPos;
glfw->GetWindowSize = glfwGetWindowSize;
glfw->SetWindowSizeLimits = glfwSetWindowSizeLimits;
glfw->SetWindowAspectRatio = glfwSetWindowAspectRatio;
glfw->SetWindowSize = glfwSetWindowSize;
glfw->GetFramebufferSize = glfwGetFramebufferSize;
glfw->GetWindowFrameSize = glfwGetWindowFrameSize;
glfw->GetWindowContentScale = glfwGetWindowContentScale;
glfw->GetWindowOpacity = glfwGetWindowOpacity;
glfw->SetWindowOpacity = glfwSetWindowOpacity;
glfw->IconifyWindow = glfwIconifyWindow;
glfw->RestoreWindow = glfwRestoreWindow;
glfw->MaximizeWindow = glfwMaximizeWindow;
glfw->ShowWindow = glfwShowWindow;
glfw->HideWindow = glfwHideWindow;
glfw->FocusWindow = glfwFocusWindow;
glfw->RequestWindowAttention = glfwRequestWindowAttention;
glfw->GetWindowMonitor = glfwGetWindowMonitor;
glfw->SetWindowMonitor = glfwSetWindowMonitor;
glfw->GetWindowAttrib = glfwGetWindowAttrib;
glfw->SetWindowAttrib = glfwSetWindowAttrib;
glfw->SetWindowUserPointer = glfwSetWindowUserPointer;
glfw->GetWindowUserPointer = glfwGetWindowUserPointer;
glfw->SetWindowPosCallback = glfwSetWindowPosCallback;
glfw->SetWindowSizeCallback = glfwSetWindowSizeCallback;
glfw->SetWindowCloseCallback = glfwSetWindowCloseCallback;
glfw->SetWindowRefreshCallback = glfwSetWindowRefreshCallback;
glfw->SetWindowFocusCallback = glfwSetWindowFocusCallback;
glfw->SetWindowIconifyCallback = glfwSetWindowIconifyCallback;
glfw->SetWindowMaximizeCallback = glfwSetWindowMaximizeCallback;
glfw->SetFramebufferSizeCallback = glfwSetFramebufferSizeCallback;
glfw->SetWindowContentScaleCallback = glfwSetWindowContentScaleCallback;
glfw->PollEvents = glfwPollEvents;
glfw->WaitEvents = glfwWaitEvents;
glfw->WaitEventsTimeout = glfwWaitEventsTimeout;
glfw->PostEmptyEvent = glfwPostEmptyEvent;
glfw->GetInputMode = glfwGetInputMode;
glfw->SetInputMode = glfwSetInputMode;
glfw->RawMouseMotionSupported = glfwRawMouseMotionSupported;
glfw->GetKeyName = glfwGetKeyName;
glfw->GetKeyScancode = glfwGetKeyScancode;
glfw->GetKey = glfwGetKey;
glfw->GetMouseButton = glfwGetMouseButton;
glfw->GetCursorPos = glfwGetCursorPos;
glfw->SetCursorPos = glfwSetCursorPos;
glfw->CreateCursor = glfwCreateCursor;
glfw->CreateStandardCursor = glfwCreateStandardCursor;
glfw->DestroyCursor = glfwDestroyCursor;
glfw->SetCursor = glfwSetCursor;
glfw->SetKeyCallback = glfwSetKeyCallback;
glfw->SetCharCallback = glfwSetCharCallback;
glfw->SetCharModsCallback = glfwSetCharModsCallback;
glfw->SetMouseButtonCallback = glfwSetMouseButtonCallback;
glfw->SetCursorPosCallback = glfwSetCursorPosCallback;
glfw->SetCursorEnterCallback = glfwSetCursorEnterCallback;
glfw->SetScrollCallback = glfwSetScrollCallback;
glfw->SetDropCallback = glfwSetDropCallback;
glfw->JoystickPresent = glfwJoystickPresent;
glfw->GetJoystickAxes = glfwGetJoystickAxes;
glfw->GetJoystickButtons = glfwGetJoystickButtons;
glfw->GetJoystickHats = glfwGetJoystickHats;
glfw->GetJoystickName = glfwGetJoystickName;
glfw->GetJoystickGUID = glfwGetJoystickGUID;
glfw->SetJoystickUserPointer = glfwSetJoystickUserPointer;
glfw->GetJoystickUserPointer = glfwGetJoystickUserPointer;
glfw->JoystickIsGamepad = glfwJoystickIsGamepad;
glfw->SetJoystickCallback = glfwSetJoystickCallback;
glfw->UpdateGamepadMappings = glfwUpdateGamepadMappings;
glfw->GetGamepadName = glfwGetGamepadName;
glfw->GetGamepadState = glfwGetGamepadState;
glfw->SetClipboardString = glfwSetClipboardString;
glfw->GetClipboardString = glfwGetClipboardString;
glfw->GetTime = glfwGetTime;
glfw->SetTime = glfwSetTime;
glfw->GetTimerValue = glfwGetTimerValue;
glfw->GetTimerFrequency = glfwGetTimerFrequency;
glfw->MakeContextCurrent = glfwMakeContextCurrent;
glfw->GetCurrentContext = glfwGetCurrentContext;
glfw->SwapBuffers = glfwSwapBuffers;
glfw->SwapInterval = glfwSwapInterval;
glfw->ExtensionSupported = glfwExtensionSupported;
glfw->GetProcAddress = glfwGetProcAddress;
glfw->VulkanSupported = glfwVulkanSupported;
glfw->GetRequiredInstanceExtensions = glfwGetRequiredInstanceExtensions;
#if defined(VK_VERSION_1_0)
glfw->GetInstanceProcAddress = glfwGetInstanceProcAddress;
glfw->GetPhysicalDevicePresentationSupport = glfwGetPhysicalDevicePresentationSupport;
glfw->CreateWindowSurface = glfwCreateWindowSurface;
#endif
#pragma endregion
return glfw;
}
SSGC_API unsigned int loadShaderCode(char* const shaderCode, GLint shadertype)
{
unsigned int shader = currentContext->CreateShader(shadertype);
currentContext->ShaderSource(shader, 1, &shaderCode, NULL);
currentContext->CompileShader(shader);
int success;
currentContext->GetShaderiv(shader, GL_COMPILE_STATUS, &success);
if (!success)
{
currentContext->GetShaderInfoLog(shader, 512, NULL, infolog);
return 0;
}
else
{
return shader;
}
}
SSGC_API unsigned int linkShaderProgram(GLuint shaderProgram)
{
currentContext->LinkProgram(shaderProgram);
int success;
currentContext->GetProgramiv(shaderProgram, GL_LINK_STATUS, &success);
if (!success)
{
currentContext->GetProgramInfoLog(shaderProgram, 512, NULL, infolog);
return 0;
}
else
{
return shaderProgram;
}
}
char* _cdecl readLog()
{
infolog[511] = '\0';
return &infolog;
}
void setCurrentGLContxt(GladGLContext* contextPtr)
{
currentContext = contextPtr;
}
+1 -1
View File
@@ -1,3 +1,3 @@
#include "StgSharpGraphic.h"
#include "StgSharpC.h"
#include <stdio.h>
+8 -8
View File
@@ -2,11 +2,11 @@
#ifdef _WIN32
#include "framework.h"
#include "ssgc_framework.h"
#endif // __
#include "StgSharpGraphic.h"
#include "StgSharpC.h"
#ifdef _WIN32
@@ -20,18 +20,18 @@ BOOL APIENTRY DllMain(HMODULE hModule,
case DLL_PROCESS_ATTACH:
do
{
defaultVecPtr = _aligned_malloc(sizeof(__m128),16);
defaultVecPtr = _aligned_malloc(sizeof(__m128), 16);
} while (defaultVecPtr == NULL);
return 1;
case DLL_THREAD_ATTACH:
return 1;
case DLL_THREAD_DETACH:
return 1;
case DLL_PROCESS_DETACH:
return 1;
break;
@@ -41,7 +41,7 @@ BOOL APIENTRY DllMain(HMODULE hModule,
#else
attribute((constructor)) void DllMain()
{
}
#endif // _WIN32
@@ -0,0 +1,765 @@
//========================================================================
// GLFW 3.4 - www.glfw.org
//------------------------------------------------------------------------
// Copyright (c) 2002-2006 Marcus Geelnard
// Copyright (c) 2006-2016 Camilla Löwy <elmindreda@glfw.org>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would
// be appreciated but is not required.
//
// 2. Altered source versions must be plainly marked as such, and must not
// be misrepresented as being the original software.
//
// 3. This notice may not be removed or altered from any source
// distribution.
//
//========================================================================
// Please use C89 style variable declarations in this file because VS 2010
//========================================================================
#include "glfw_internal.h"
#include <assert.h>
#include <stdio.h>
#include <string.h>
#include <limits.h>
#include <stdio.h>
//////////////////////////////////////////////////////////////////////////
////// GLFW internal API //////
//////////////////////////////////////////////////////////////////////////
// Checks whether the desired context attributes are valid
//
// This function checks things like whether the specified client API version
// exists and whether all relevant options have supported and non-conflicting
// values
//
GLFWbool _glfwIsValidContextConfig(const _GLFWctxconfig* ctxconfig)
{
if (ctxconfig->source != GLFW_NATIVE_CONTEXT_API &&
ctxconfig->source != GLFW_EGL_CONTEXT_API &&
ctxconfig->source != GLFW_OSMESA_CONTEXT_API)
{
_glfwInputError(GLFW_INVALID_ENUM,
"Invalid context creation API 0x%08X",
ctxconfig->source);
return GLFW_FALSE;
}
if (ctxconfig->client != GLFW_NO_API &&
ctxconfig->client != GLFW_OPENGL_API &&
ctxconfig->client != GLFW_OPENGL_ES_API)
{
_glfwInputError(GLFW_INVALID_ENUM,
"Invalid client API 0x%08X",
ctxconfig->client);
return GLFW_FALSE;
}
if (ctxconfig->share)
{
if (ctxconfig->client == GLFW_NO_API ||
ctxconfig->share->context.client == GLFW_NO_API)
{
_glfwInputError(GLFW_NO_WINDOW_CONTEXT, NULL);
return GLFW_FALSE;
}
if (ctxconfig->source != ctxconfig->share->context.source)
{
_glfwInputError(GLFW_INVALID_ENUM,
"Context creation APIs do not match between contexts");
return GLFW_FALSE;
}
}
if (ctxconfig->client == GLFW_OPENGL_API)
{
if ((ctxconfig->major < 1 || ctxconfig->minor < 0) ||
(ctxconfig->major == 1 && ctxconfig->minor > 5) ||
(ctxconfig->major == 2 && ctxconfig->minor > 1) ||
(ctxconfig->major == 3 && ctxconfig->minor > 3))
{
// OpenGL 1.0 is the smallest valid version
// OpenGL 1.x series ended with version 1.5
// OpenGL 2.x series ended with version 2.1
// OpenGL 3.x series ended with version 3.3
// For now, let everything else through
_glfwInputError(GLFW_INVALID_VALUE,
"Invalid OpenGL version %i.%i",
ctxconfig->major, ctxconfig->minor);
return GLFW_FALSE;
}
if (ctxconfig->profile)
{
if (ctxconfig->profile != GLFW_OPENGL_CORE_PROFILE &&
ctxconfig->profile != GLFW_OPENGL_COMPAT_PROFILE)
{
_glfwInputError(GLFW_INVALID_ENUM,
"Invalid OpenGL profile 0x%08X",
ctxconfig->profile);
return GLFW_FALSE;
}
if (ctxconfig->major <= 2 ||
(ctxconfig->major == 3 && ctxconfig->minor < 2))
{
// Desktop OpenGL context profiles are only defined for version 3.2
// and above
_glfwInputError(GLFW_INVALID_VALUE,
"Context profiles are only defined for OpenGL version 3.2 and above");
return GLFW_FALSE;
}
}
if (ctxconfig->forward && ctxconfig->major <= 2)
{
// Forward-compatible contexts are only defined for OpenGL version 3.0 and above
_glfwInputError(GLFW_INVALID_VALUE,
"Forward-compatibility is only defined for OpenGL version 3.0 and above");
return GLFW_FALSE;
}
}
else if (ctxconfig->client == GLFW_OPENGL_ES_API)
{
if (ctxconfig->major < 1 || ctxconfig->minor < 0 ||
(ctxconfig->major == 1 && ctxconfig->minor > 1) ||
(ctxconfig->major == 2 && ctxconfig->minor > 0))
{
// OpenGL ES 1.0 is the smallest valid version
// OpenGL ES 1.x series ended with version 1.1
// OpenGL ES 2.x series ended with version 2.0
// For now, let everything else through
_glfwInputError(GLFW_INVALID_VALUE,
"Invalid OpenGL ES version %i.%i",
ctxconfig->major, ctxconfig->minor);
return GLFW_FALSE;
}
}
if (ctxconfig->robustness)
{
if (ctxconfig->robustness != GLFW_NO_RESET_NOTIFICATION &&
ctxconfig->robustness != GLFW_LOSE_CONTEXT_ON_RESET)
{
_glfwInputError(GLFW_INVALID_ENUM,
"Invalid context robustness mode 0x%08X",
ctxconfig->robustness);
return GLFW_FALSE;
}
}
if (ctxconfig->release)
{
if (ctxconfig->release != GLFW_RELEASE_BEHAVIOR_NONE &&
ctxconfig->release != GLFW_RELEASE_BEHAVIOR_FLUSH)
{
_glfwInputError(GLFW_INVALID_ENUM,
"Invalid context release behavior 0x%08X",
ctxconfig->release);
return GLFW_FALSE;
}
}
return GLFW_TRUE;
}
// Chooses the framebuffer config that best matches the desired one
//
const _GLFWfbconfig* _glfwChooseFBConfig(const _GLFWfbconfig* desired,
const _GLFWfbconfig* alternatives,
unsigned int count)
{
unsigned int i;
unsigned int missing, leastMissing = UINT_MAX;
unsigned int colorDiff, leastColorDiff = UINT_MAX;
unsigned int extraDiff, leastExtraDiff = UINT_MAX;
const _GLFWfbconfig* current;
const _GLFWfbconfig* closest = NULL;
for (i = 0; i < count; i++)
{
current = alternatives + i;
if (desired->stereo > 0 && current->stereo == 0)
{
// Stereo is a hard constraint
continue;
}
// Count number of missing buffers
{
missing = 0;
if (desired->alphaBits > 0 && current->alphaBits == 0)
missing++;
if (desired->depthBits > 0 && current->depthBits == 0)
missing++;
if (desired->stencilBits > 0 && current->stencilBits == 0)
missing++;
if (desired->auxBuffers > 0 &&
current->auxBuffers < desired->auxBuffers)
{
missing += desired->auxBuffers - current->auxBuffers;
}
if (desired->samples > 0 && current->samples == 0)
{
// Technically, several multisampling buffers could be
// involved, but that's a lower level implementation detail and
// not important to us here, so we count them as one
missing++;
}
if (desired->transparent != current->transparent)
missing++;
}
// These polynomials make many small channel size differences matter
// less than one large channel size difference
// Calculate color channel size difference value
{
colorDiff = 0;
if (desired->redBits != GLFW_DONT_CARE)
{
colorDiff += (desired->redBits - current->redBits) *
(desired->redBits - current->redBits);
}
if (desired->greenBits != GLFW_DONT_CARE)
{
colorDiff += (desired->greenBits - current->greenBits) *
(desired->greenBits - current->greenBits);
}
if (desired->blueBits != GLFW_DONT_CARE)
{
colorDiff += (desired->blueBits - current->blueBits) *
(desired->blueBits - current->blueBits);
}
}
// Calculate non-color channel size difference value
{
extraDiff = 0;
if (desired->alphaBits != GLFW_DONT_CARE)
{
extraDiff += (desired->alphaBits - current->alphaBits) *
(desired->alphaBits - current->alphaBits);
}
if (desired->depthBits != GLFW_DONT_CARE)
{
extraDiff += (desired->depthBits - current->depthBits) *
(desired->depthBits - current->depthBits);
}
if (desired->stencilBits != GLFW_DONT_CARE)
{
extraDiff += (desired->stencilBits - current->stencilBits) *
(desired->stencilBits - current->stencilBits);
}
if (desired->accumRedBits != GLFW_DONT_CARE)
{
extraDiff += (desired->accumRedBits - current->accumRedBits) *
(desired->accumRedBits - current->accumRedBits);
}
if (desired->accumGreenBits != GLFW_DONT_CARE)
{
extraDiff += (desired->accumGreenBits - current->accumGreenBits) *
(desired->accumGreenBits - current->accumGreenBits);
}
if (desired->accumBlueBits != GLFW_DONT_CARE)
{
extraDiff += (desired->accumBlueBits - current->accumBlueBits) *
(desired->accumBlueBits - current->accumBlueBits);
}
if (desired->accumAlphaBits != GLFW_DONT_CARE)
{
extraDiff += (desired->accumAlphaBits - current->accumAlphaBits) *
(desired->accumAlphaBits - current->accumAlphaBits);
}
if (desired->samples != GLFW_DONT_CARE)
{
extraDiff += (desired->samples - current->samples) *
(desired->samples - current->samples);
}
if (desired->sRGB && !current->sRGB)
extraDiff++;
}
// Figure out if the current one is better than the best one found so far
// Least number of missing buffers is the most important heuristic,
// then color buffer size match and lastly size match for other buffers
if (missing < leastMissing)
closest = current;
else if (missing == leastMissing)
{
if ((colorDiff < leastColorDiff) ||
(colorDiff == leastColorDiff && extraDiff < leastExtraDiff))
{
closest = current;
}
}
if (current == closest)
{
leastMissing = missing;
leastColorDiff = colorDiff;
leastExtraDiff = extraDiff;
}
}
return closest;
}
// Retrieves the attributes of the current context
//
GLFWbool _glfwRefreshContextAttribs(_GLFWwindow* window,
const _GLFWctxconfig* ctxconfig)
{
int i;
_GLFWwindow* previous;
const char* version;
const char* prefixes[] =
{
"OpenGL ES-CM ",
"OpenGL ES-CL ",
"OpenGL ES ",
NULL
};
window->context.source = ctxconfig->source;
window->context.client = GLFW_OPENGL_API;
previous = _glfwPlatformGetTls(&_glfw.contextSlot);
glfwMakeContextCurrent((GLFWwindow*)window);
window->context.GetIntegerv = (PFNGLGETINTEGERVPROC)
window->context.getProcAddress("glGetIntegerv");
window->context.GetString = (PFNGLGETSTRINGPROC)
window->context.getProcAddress("glGetString");
if (!window->context.GetIntegerv || !window->context.GetString)
{
_glfwInputError(GLFW_PLATFORM_ERROR, "Entry point retrieval is broken");
glfwMakeContextCurrent((GLFWwindow*)previous);
return GLFW_FALSE;
}
version = (const char*)window->context.GetString(GL_VERSION);
if (!version)
{
if (ctxconfig->client == GLFW_OPENGL_API)
{
_glfwInputError(GLFW_PLATFORM_ERROR,
"OpenGL version string retrieval is broken");
}
else
{
_glfwInputError(GLFW_PLATFORM_ERROR,
"OpenGL ES version string retrieval is broken");
}
glfwMakeContextCurrent((GLFWwindow*)previous);
return GLFW_FALSE;
}
for (i = 0; prefixes[i]; i++)
{
const size_t length = strlen(prefixes[i]);
if (strncmp(version, prefixes[i], length) == 0)
{
version += length;
window->context.client = GLFW_OPENGL_ES_API;
break;
}
}
if (!sscanf(version, "%d.%d.%d",
&window->context.major,
&window->context.minor,
&window->context.revision))
{
if (window->context.client == GLFW_OPENGL_API)
{
_glfwInputError(GLFW_PLATFORM_ERROR,
"No version found in OpenGL version string");
}
else
{
_glfwInputError(GLFW_PLATFORM_ERROR,
"No version found in OpenGL ES version string");
}
glfwMakeContextCurrent((GLFWwindow*)previous);
return GLFW_FALSE;
}
if (window->context.major < ctxconfig->major ||
(window->context.major == ctxconfig->major &&
window->context.minor < ctxconfig->minor))
{
// The desired OpenGL version is greater than the actual version
// This only happens if the machine lacks {GLX|WGL}_ARB_create_context
// /and/ the user has requested an OpenGL version greater than 1.0
// For API consistency, we emulate the behavior of the
// {GLX|WGL}_ARB_create_context extension and fail here
if (window->context.client == GLFW_OPENGL_API)
{
_glfwInputError(GLFW_VERSION_UNAVAILABLE,
"Requested OpenGL version %i.%i, got version %i.%i",
ctxconfig->major, ctxconfig->minor,
window->context.major, window->context.minor);
}
else
{
_glfwInputError(GLFW_VERSION_UNAVAILABLE,
"Requested OpenGL ES version %i.%i, got version %i.%i",
ctxconfig->major, ctxconfig->minor,
window->context.major, window->context.minor);
}
glfwMakeContextCurrent((GLFWwindow*)previous);
return GLFW_FALSE;
}
if (window->context.major >= 3)
{
// OpenGL 3.0+ uses a different function for extension string retrieval
// We cache it here instead of in glfwExtensionSupported mostly to alert
// users as early as possible that their build may be broken
window->context.GetStringi = (PFNGLGETSTRINGIPROC)
window->context.getProcAddress("glGetStringi");
if (!window->context.GetStringi)
{
_glfwInputError(GLFW_PLATFORM_ERROR,
"Entry point retrieval is broken");
glfwMakeContextCurrent((GLFWwindow*)previous);
return GLFW_FALSE;
}
}
if (window->context.client == GLFW_OPENGL_API)
{
// Read back context flags (OpenGL 3.0 and above)
if (window->context.major >= 3)
{
GLint flags;
window->context.GetIntegerv(GL_CONTEXT_FLAGS, &flags);
if (flags & GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT)
window->context.forward = GLFW_TRUE;
if (flags & GL_CONTEXT_FLAG_DEBUG_BIT)
window->context.debug = GLFW_TRUE;
else if (glfwExtensionSupported("GL_ARB_debug_output") &&
ctxconfig->debug)
{
// HACK: This is a workaround for older drivers (pre KHR_debug)
// not setting the debug bit in the context flags for
// debug contexts
window->context.debug = GLFW_TRUE;
}
if (flags & GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR)
window->context.noerror = GLFW_TRUE;
}
// Read back OpenGL context profile (OpenGL 3.2 and above)
if (window->context.major >= 4 ||
(window->context.major == 3 && window->context.minor >= 2))
{
GLint mask;
window->context.GetIntegerv(GL_CONTEXT_PROFILE_MASK, &mask);
if (mask & GL_CONTEXT_COMPATIBILITY_PROFILE_BIT)
window->context.profile = GLFW_OPENGL_COMPAT_PROFILE;
else if (mask & GL_CONTEXT_CORE_PROFILE_BIT)
window->context.profile = GLFW_OPENGL_CORE_PROFILE;
else if (glfwExtensionSupported("GL_ARB_compatibility"))
{
// HACK: This is a workaround for the compatibility profile bit
// not being set in the context flags if an OpenGL 3.2+
// context was created without having requested a specific
// version
window->context.profile = GLFW_OPENGL_COMPAT_PROFILE;
}
}
// Read back robustness strategy
if (glfwExtensionSupported("GL_ARB_robustness"))
{
// NOTE: We avoid using the context flags for detection, as they are
// only present from 3.0 while the extension applies from 1.1
GLint strategy;
window->context.GetIntegerv(GL_RESET_NOTIFICATION_STRATEGY_ARB,
&strategy);
if (strategy == GL_LOSE_CONTEXT_ON_RESET_ARB)
window->context.robustness = GLFW_LOSE_CONTEXT_ON_RESET;
else if (strategy == GL_NO_RESET_NOTIFICATION_ARB)
window->context.robustness = GLFW_NO_RESET_NOTIFICATION;
}
}
else
{
// Read back robustness strategy
if (glfwExtensionSupported("GL_EXT_robustness"))
{
// NOTE: The values of these constants match those of the OpenGL ARB
// one, so we can reuse them here
GLint strategy;
window->context.GetIntegerv(GL_RESET_NOTIFICATION_STRATEGY_ARB,
&strategy);
if (strategy == GL_LOSE_CONTEXT_ON_RESET_ARB)
window->context.robustness = GLFW_LOSE_CONTEXT_ON_RESET;
else if (strategy == GL_NO_RESET_NOTIFICATION_ARB)
window->context.robustness = GLFW_NO_RESET_NOTIFICATION;
}
}
if (glfwExtensionSupported("GL_KHR_context_flush_control"))
{
GLint behavior;
window->context.GetIntegerv(GL_CONTEXT_RELEASE_BEHAVIOR, &behavior);
if (behavior == GL_NONE)
window->context.release = GLFW_RELEASE_BEHAVIOR_NONE;
else if (behavior == GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH)
window->context.release = GLFW_RELEASE_BEHAVIOR_FLUSH;
}
// Clearing the front buffer to black to avoid garbage pixels left over from
// previous uses of our bit of VRAM
{
PFNGLCLEARPROC glClear = (PFNGLCLEARPROC)
window->context.getProcAddress("glClear");
glClear(GL_COLOR_BUFFER_BIT);
if (window->doublebuffer)
window->context.swapBuffers(window);
}
glfwMakeContextCurrent((GLFWwindow*)previous);
return GLFW_TRUE;
}
// Searches an extension string for the specified extension
//
GLFWbool _glfwStringInExtensionString(const char* string, const char* extensions)
{
const char* start = extensions;
for (;;)
{
const char* where;
const char* terminator;
where = strstr(start, string);
if (!where)
return GLFW_FALSE;
terminator = where + strlen(string);
if (where == start || *(where - 1) == ' ')
{
if (*terminator == ' ' || *terminator == '\0')
break;
}
start = terminator;
}
return GLFW_TRUE;
}
//////////////////////////////////////////////////////////////////////////
////// GLFW public API //////
//////////////////////////////////////////////////////////////////////////
SSCAPI void glfwMakeContextCurrent(GLFWwindow* handle)
{
_GLFWwindow* window = (_GLFWwindow*)handle;
_GLFWwindow* previous;
_GLFW_REQUIRE_INIT();
previous = _glfwPlatformGetTls(&_glfw.contextSlot);
if (window && window->context.client == GLFW_NO_API)
{
_glfwInputError(GLFW_NO_WINDOW_CONTEXT,
"Cannot make current with a window that has no OpenGL or OpenGL ES context");
return;
}
if (previous)
{
if (!window || window->context.source != previous->context.source)
previous->context.makeCurrent(NULL);
}
if (window)
window->context.makeCurrent(window);
}
SSCAPI GLFWwindow* glfwGetCurrentContext(void)
{
_GLFW_REQUIRE_INIT_OR_RETURN(NULL);
return _glfwPlatformGetTls(&_glfw.contextSlot);
}
SSCAPI void glfwSwapBuffers(GLFWwindow* handle)
{
_GLFWwindow* window = (_GLFWwindow*)handle;
assert(window != NULL);
_GLFW_REQUIRE_INIT();
if (window->context.client == GLFW_NO_API)
{
_glfwInputError(GLFW_NO_WINDOW_CONTEXT,
"Cannot swap buffers of a window that has no OpenGL or OpenGL ES context");
return;
}
window->context.swapBuffers(window);
}
SSCAPI void glfwSwapInterval(int interval)
{
_GLFWwindow* window;
_GLFW_REQUIRE_INIT();
window = _glfwPlatformGetTls(&_glfw.contextSlot);
if (!window)
{
_glfwInputError(GLFW_NO_CURRENT_CONTEXT,
"Cannot set swap interval without a current OpenGL or OpenGL ES context");
return;
}
window->context.swapInterval(interval);
}
SSCAPI int glfwExtensionSupported(const char* extension)
{
_GLFWwindow* window;
assert(extension != NULL);
_GLFW_REQUIRE_INIT_OR_RETURN(GLFW_FALSE);
window = _glfwPlatformGetTls(&_glfw.contextSlot);
if (!window)
{
_glfwInputError(GLFW_NO_CURRENT_CONTEXT,
"Cannot query extension without a current OpenGL or OpenGL ES context");
return GLFW_FALSE;
}
if (*extension == '\0')
{
_glfwInputError(GLFW_INVALID_VALUE, "Extension name cannot be an empty string");
return GLFW_FALSE;
}
if (window->context.major >= 3)
{
int i;
GLint count;
// Check if extension is in the modern OpenGL extensions string list
window->context.GetIntegerv(GL_NUM_EXTENSIONS, &count);
for (i = 0; i < count; i++)
{
const char* en = (const char*)
window->context.GetStringi(GL_EXTENSIONS, i);
if (!en)
{
_glfwInputError(GLFW_PLATFORM_ERROR,
"Extension string retrieval is broken");
return GLFW_FALSE;
}
if (strcmp(en, extension) == 0)
return GLFW_TRUE;
}
}
else
{
// Check if extension is in the old style OpenGL extensions string
const char* extensions = (const char*)
window->context.GetString(GL_EXTENSIONS);
if (!extensions)
{
_glfwInputError(GLFW_PLATFORM_ERROR,
"Extension string retrieval is broken");
return GLFW_FALSE;
}
if (_glfwStringInExtensionString(extension, extensions))
return GLFW_TRUE;
}
// Check if extension is in the platform-specific string
return window->context.extensionSupported(extension);
}
SSCAPI GLFWglproc glfwGetProcAddress(const char* procname)
{
_GLFWwindow* window;
assert(procname != NULL);
_GLFW_REQUIRE_INIT_OR_RETURN(NULL);
window = _glfwPlatformGetTls(&_glfw.contextSlot);
if (!window)
{
_glfwInputError(GLFW_NO_CURRENT_CONTEXT,
"Cannot query entry point without a current OpenGL or OpenGL ES context");
return NULL;
}
return window->context.getProcAddress(procname);
}
@@ -0,0 +1,909 @@
//========================================================================
// GLFW 3.4 EGL - www.glfw.org
//------------------------------------------------------------------------
// Copyright (c) 2002-2006 Marcus Geelnard
// Copyright (c) 2006-2019 Camilla Löwy <elmindreda@glfw.org>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would
// be appreciated but is not required.
//
// 2. Altered source versions must be plainly marked as such, and must not
// be misrepresented as being the original software.
//
// 3. This notice may not be removed or altered from any source
// distribution.
//
//========================================================================
// Please use C89 style variable declarations in this file because VS 2010
//========================================================================
#include "glfw_internal.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
// Return a description of the specified EGL error
//
static const char* getEGLErrorString(EGLint error)
{
switch (error)
{
case EGL_SUCCESS:
return "Success";
case EGL_NOT_INITIALIZED:
return "EGL is not or could not be initialized";
case EGL_BAD_ACCESS:
return "EGL cannot access a requested resource";
case EGL_BAD_ALLOC:
return "EGL failed to allocate resources for the requested operation";
case EGL_BAD_ATTRIBUTE:
return "An unrecognized attribute or attribute value was passed in the attribute list";
case EGL_BAD_CONTEXT:
return "An EGLContext argument does not name a valid EGL rendering context";
case EGL_BAD_CONFIG:
return "An EGLConfig argument does not name a valid EGL frame buffer configuration";
case EGL_BAD_CURRENT_SURFACE:
return "The current surface of the calling thread is a window, pixel buffer or pixmap that is no longer valid";
case EGL_BAD_DISPLAY:
return "An EGLDisplay argument does not name a valid EGL display connection";
case EGL_BAD_SURFACE:
return "An EGLSurface argument does not name a valid surface configured for GL rendering";
case EGL_BAD_MATCH:
return "Arguments are inconsistent";
case EGL_BAD_PARAMETER:
return "One or more argument values are invalid";
case EGL_BAD_NATIVE_PIXMAP:
return "A NativePixmapType argument does not refer to a valid native pixmap";
case EGL_BAD_NATIVE_WINDOW:
return "A NativeWindowType argument does not refer to a valid native window";
case EGL_CONTEXT_LOST:
return "The application must destroy all contexts and reinitialise";
default:
return "ERROR: UNKNOWN EGL ERROR";
}
}
// Returns the specified attribute of the specified EGLConfig
//
static int getEGLConfigAttrib(EGLConfig config, int attrib)
{
int value;
eglGetConfigAttrib(_glfw.egl.display, config, attrib, &value);
return value;
}
// Return the EGLConfig most closely matching the specified hints
//
static GLFWbool chooseEGLConfig(const _GLFWctxconfig* ctxconfig,
const _GLFWfbconfig* fbconfig,
EGLConfig* result)
{
EGLConfig* nativeConfigs;
_GLFWfbconfig* usableConfigs;
const _GLFWfbconfig* closest;
int i, nativeCount, usableCount, apiBit;
GLFWbool wrongApiAvailable = GLFW_FALSE;
if (ctxconfig->client == GLFW_OPENGL_ES_API)
{
if (ctxconfig->major == 1)
apiBit = EGL_OPENGL_ES_BIT;
else
apiBit = EGL_OPENGL_ES2_BIT;
}
else
apiBit = EGL_OPENGL_BIT;
if (fbconfig->stereo)
{
_glfwInputError(GLFW_FORMAT_UNAVAILABLE, "EGL: Stereo rendering not supported");
return GLFW_FALSE;
}
eglGetConfigs(_glfw.egl.display, NULL, 0, &nativeCount);
if (!nativeCount)
{
_glfwInputError(GLFW_API_UNAVAILABLE, "EGL: No EGLConfigs returned");
return GLFW_FALSE;
}
nativeConfigs = _glfw_calloc(nativeCount, sizeof(EGLConfig));
eglGetConfigs(_glfw.egl.display, nativeConfigs, nativeCount, &nativeCount);
usableConfigs = _glfw_calloc(nativeCount, sizeof(_GLFWfbconfig));
usableCount = 0;
for (i = 0; i < nativeCount; i++)
{
const EGLConfig n = nativeConfigs[i];
_GLFWfbconfig* u = usableConfigs + usableCount;
// Only consider RGB(A) EGLConfigs
if (getEGLConfigAttrib(n, EGL_COLOR_BUFFER_TYPE) != EGL_RGB_BUFFER)
continue;
// Only consider window EGLConfigs
if (!(getEGLConfigAttrib(n, EGL_SURFACE_TYPE) & EGL_WINDOW_BIT))
continue;
#if defined(_GLFW_X11)
if (_glfw.platform.platformID == GLFW_PLATFORM_X11)
{
XVisualInfo vi = { 0 };
// Only consider EGLConfigs with associated Visuals
vi.visualid = getEGLConfigAttrib(n, EGL_NATIVE_VISUAL_ID);
if (!vi.visualid)
continue;
if (fbconfig->transparent)
{
int count;
XVisualInfo* vis =
XGetVisualInfo(_glfw.x11.display, VisualIDMask, &vi, &count);
if (vis)
{
u->transparent = _glfwIsVisualTransparentX11(vis[0].visual);
XFree(vis);
}
}
}
#endif // _GLFW_X11
if (!(getEGLConfigAttrib(n, EGL_RENDERABLE_TYPE) & apiBit))
{
wrongApiAvailable = GLFW_TRUE;
continue;
}
u->redBits = getEGLConfigAttrib(n, EGL_RED_SIZE);
u->greenBits = getEGLConfigAttrib(n, EGL_GREEN_SIZE);
u->blueBits = getEGLConfigAttrib(n, EGL_BLUE_SIZE);
u->alphaBits = getEGLConfigAttrib(n, EGL_ALPHA_SIZE);
u->depthBits = getEGLConfigAttrib(n, EGL_DEPTH_SIZE);
u->stencilBits = getEGLConfigAttrib(n, EGL_STENCIL_SIZE);
#if defined(_GLFW_WAYLAND)
if (_glfw.platform.platformID == GLFW_PLATFORM_WAYLAND)
{
// NOTE: The wl_surface opaque region is no guarantee that its buffer
// is presented as opaque, if it also has an alpha channel
// HACK: If EGL_EXT_present_opaque is unavailable, ignore any config
// with an alpha channel to ensure the buffer is opaque
if (!_glfw.egl.EXT_present_opaque)
{
if (!fbconfig->transparent && u->alphaBits > 0)
continue;
}
}
#endif // _GLFW_WAYLAND
u->samples = getEGLConfigAttrib(n, EGL_SAMPLES);
u->doublebuffer = fbconfig->doublebuffer;
u->handle = (uintptr_t)n;
usableCount++;
}
closest = _glfwChooseFBConfig(fbconfig, usableConfigs, usableCount);
if (closest)
*result = (EGLConfig)closest->handle;
else
{
if (wrongApiAvailable)
{
if (ctxconfig->client == GLFW_OPENGL_ES_API)
{
if (ctxconfig->major == 1)
{
_glfwInputError(GLFW_API_UNAVAILABLE,
"EGL: Failed to find support for OpenGL ES 1.x");
}
else
{
_glfwInputError(GLFW_API_UNAVAILABLE,
"EGL: Failed to find support for OpenGL ES 2 or later");
}
}
else
{
_glfwInputError(GLFW_API_UNAVAILABLE,
"EGL: Failed to find support for OpenGL");
}
}
else
{
_glfwInputError(GLFW_FORMAT_UNAVAILABLE,
"EGL: Failed to find a suitable EGLConfig");
}
}
_glfw_free(nativeConfigs);
_glfw_free(usableConfigs);
return closest != NULL;
}
static void makeContextCurrentEGL(_GLFWwindow* window)
{
if (window)
{
if (!eglMakeCurrent(_glfw.egl.display,
window->context.egl.surface,
window->context.egl.surface,
window->context.egl.handle))
{
_glfwInputError(GLFW_PLATFORM_ERROR,
"EGL: Failed to make context current: %s",
getEGLErrorString(eglGetError()));
return;
}
}
else
{
if (!eglMakeCurrent(_glfw.egl.display,
EGL_NO_SURFACE,
EGL_NO_SURFACE,
EGL_NO_CONTEXT))
{
_glfwInputError(GLFW_PLATFORM_ERROR,
"EGL: Failed to clear current context: %s",
getEGLErrorString(eglGetError()));
return;
}
}
_glfwPlatformSetTls(&_glfw.contextSlot, window);
}
static void swapBuffersEGL(_GLFWwindow* window)
{
if (window != _glfwPlatformGetTls(&_glfw.contextSlot))
{
_glfwInputError(GLFW_PLATFORM_ERROR,
"EGL: The context must be current on the calling thread when swapping buffers");
return;
}
#if defined(_GLFW_WAYLAND)
if (_glfw.platform.platformID == GLFW_PLATFORM_WAYLAND)
{
// NOTE: Swapping buffers on a hidden window on Wayland makes it visible
if (!window->wl.visible)
return;
}
#endif
eglSwapBuffers(_glfw.egl.display, window->context.egl.surface);
}
static void swapIntervalEGL(int interval)
{
eglSwapInterval(_glfw.egl.display, interval);
}
static int extensionSupportedEGL(const char* extension)
{
const char* extensions = eglQueryString(_glfw.egl.display, EGL_EXTENSIONS);
if (extensions)
{
if (_glfwStringInExtensionString(extension, extensions))
return GLFW_TRUE;
}
return GLFW_FALSE;
}
static GLFWglproc getProcAddressEGL(const char* procname)
{
_GLFWwindow* window = _glfwPlatformGetTls(&_glfw.contextSlot);
if (window->context.egl.client)
{
GLFWglproc proc = (GLFWglproc)
_glfwPlatformGetModuleSymbol(window->context.egl.client, procname);
if (proc)
return proc;
}
return eglGetProcAddress(procname);
}
static void destroyContextEGL(_GLFWwindow* window)
{
// NOTE: Do not unload libGL.so.1 while the X11 display is still open,
// as it will make XCloseDisplay segfault
if (_glfw.platform.platformID != GLFW_PLATFORM_X11 ||
window->context.client != GLFW_OPENGL_API)
{
if (window->context.egl.client)
{
_glfwPlatformFreeModule(window->context.egl.client);
window->context.egl.client = NULL;
}
}
if (window->context.egl.surface)
{
eglDestroySurface(_glfw.egl.display, window->context.egl.surface);
window->context.egl.surface = EGL_NO_SURFACE;
}
if (window->context.egl.handle)
{
eglDestroyContext(_glfw.egl.display, window->context.egl.handle);
window->context.egl.handle = EGL_NO_CONTEXT;
}
}
//////////////////////////////////////////////////////////////////////////
////// GLFW internal API //////
//////////////////////////////////////////////////////////////////////////
// Initialize EGL
//
GLFWbool _glfwInitEGL(void)
{
int i;
EGLint* attribs = NULL;
const char* extensions;
const char* sonames[] =
{
#if defined(_GLFW_EGL_LIBRARY)
_GLFW_EGL_LIBRARY,
#elif defined(_GLFW_WIN32)
"libEGL.dll",
"EGL.dll",
#elif defined(_GLFW_COCOA)
"libEGL.dylib",
#elif defined(__CYGWIN__)
"libEGL-1.so",
#elif defined(__OpenBSD__) || defined(__NetBSD__)
"libEGL.so",
#else
"libEGL.so.1",
#endif
NULL
};
if (_glfw.egl.handle)
return GLFW_TRUE;
for (i = 0; sonames[i]; i++)
{
_glfw.egl.handle = _glfwPlatformLoadModule(sonames[i]);
if (_glfw.egl.handle)
break;
}
if (!_glfw.egl.handle)
{
_glfwInputError(GLFW_API_UNAVAILABLE, "EGL: Library not found");
return GLFW_FALSE;
}
_glfw.egl.prefix = (strncmp(sonames[i], "lib", 3) == 0);
_glfw.egl.GetConfigAttrib = (PFN_eglGetConfigAttrib)
_glfwPlatformGetModuleSymbol(_glfw.egl.handle, "eglGetConfigAttrib");
_glfw.egl.GetConfigs = (PFN_eglGetConfigs)
_glfwPlatformGetModuleSymbol(_glfw.egl.handle, "eglGetConfigs");
_glfw.egl.GetDisplay = (PFN_eglGetDisplay)
_glfwPlatformGetModuleSymbol(_glfw.egl.handle, "eglGetDisplay");
_glfw.egl.GetError = (PFN_eglGetError)
_glfwPlatformGetModuleSymbol(_glfw.egl.handle, "eglGetError");
_glfw.egl.Initialize = (PFN_eglInitialize)
_glfwPlatformGetModuleSymbol(_glfw.egl.handle, "eglInitialize");
_glfw.egl.Terminate = (PFN_eglTerminate)
_glfwPlatformGetModuleSymbol(_glfw.egl.handle, "eglTerminate");
_glfw.egl.BindAPI = (PFN_eglBindAPI)
_glfwPlatformGetModuleSymbol(_glfw.egl.handle, "eglBindAPI");
_glfw.egl.CreateContext = (PFN_eglCreateContext)
_glfwPlatformGetModuleSymbol(_glfw.egl.handle, "eglCreateContext");
_glfw.egl.DestroySurface = (PFN_eglDestroySurface)
_glfwPlatformGetModuleSymbol(_glfw.egl.handle, "eglDestroySurface");
_glfw.egl.DestroyContext = (PFN_eglDestroyContext)
_glfwPlatformGetModuleSymbol(_glfw.egl.handle, "eglDestroyContext");
_glfw.egl.CreateWindowSurface = (PFN_eglCreateWindowSurface)
_glfwPlatformGetModuleSymbol(_glfw.egl.handle, "eglCreateWindowSurface");
_glfw.egl.MakeCurrent = (PFN_eglMakeCurrent)
_glfwPlatformGetModuleSymbol(_glfw.egl.handle, "eglMakeCurrent");
_glfw.egl.SwapBuffers = (PFN_eglSwapBuffers)
_glfwPlatformGetModuleSymbol(_glfw.egl.handle, "eglSwapBuffers");
_glfw.egl.SwapInterval = (PFN_eglSwapInterval)
_glfwPlatformGetModuleSymbol(_glfw.egl.handle, "eglSwapInterval");
_glfw.egl.QueryString = (PFN_eglQueryString)
_glfwPlatformGetModuleSymbol(_glfw.egl.handle, "eglQueryString");
_glfw.egl.GetProcAddress = (PFN_eglGetProcAddress)
_glfwPlatformGetModuleSymbol(_glfw.egl.handle, "eglGetProcAddress");
if (!_glfw.egl.GetConfigAttrib ||
!_glfw.egl.GetConfigs ||
!_glfw.egl.GetDisplay ||
!_glfw.egl.GetError ||
!_glfw.egl.Initialize ||
!_glfw.egl.Terminate ||
!_glfw.egl.BindAPI ||
!_glfw.egl.CreateContext ||
!_glfw.egl.DestroySurface ||
!_glfw.egl.DestroyContext ||
!_glfw.egl.CreateWindowSurface ||
!_glfw.egl.MakeCurrent ||
!_glfw.egl.SwapBuffers ||
!_glfw.egl.SwapInterval ||
!_glfw.egl.QueryString ||
!_glfw.egl.GetProcAddress)
{
_glfwInputError(GLFW_PLATFORM_ERROR,
"EGL: Failed to load required entry points");
_glfwTerminateEGL();
return GLFW_FALSE;
}
extensions = eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS);
if (extensions && eglGetError() == EGL_SUCCESS)
_glfw.egl.EXT_client_extensions = GLFW_TRUE;
if (_glfw.egl.EXT_client_extensions)
{
_glfw.egl.EXT_platform_base =
_glfwStringInExtensionString("EGL_EXT_platform_base", extensions);
_glfw.egl.EXT_platform_x11 =
_glfwStringInExtensionString("EGL_EXT_platform_x11", extensions);
_glfw.egl.EXT_platform_wayland =
_glfwStringInExtensionString("EGL_EXT_platform_wayland", extensions);
_glfw.egl.ANGLE_platform_angle =
_glfwStringInExtensionString("EGL_ANGLE_platform_angle", extensions);
_glfw.egl.ANGLE_platform_angle_opengl =
_glfwStringInExtensionString("EGL_ANGLE_platform_angle_opengl", extensions);
_glfw.egl.ANGLE_platform_angle_d3d =
_glfwStringInExtensionString("EGL_ANGLE_platform_angle_d3d", extensions);
_glfw.egl.ANGLE_platform_angle_vulkan =
_glfwStringInExtensionString("EGL_ANGLE_platform_angle_vulkan", extensions);
_glfw.egl.ANGLE_platform_angle_metal =
_glfwStringInExtensionString("EGL_ANGLE_platform_angle_metal", extensions);
}
if (_glfw.egl.EXT_platform_base)
{
_glfw.egl.GetPlatformDisplayEXT = (PFNEGLGETPLATFORMDISPLAYEXTPROC)
eglGetProcAddress("eglGetPlatformDisplayEXT");
_glfw.egl.CreatePlatformWindowSurfaceEXT = (PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC)
eglGetProcAddress("eglCreatePlatformWindowSurfaceEXT");
}
_glfw.egl.platform = _glfw.platform.getEGLPlatform(&attribs);
if (_glfw.egl.platform)
{
_glfw.egl.display =
eglGetPlatformDisplayEXT(_glfw.egl.platform,
_glfw.platform.getEGLNativeDisplay(),
attribs);
}
else
_glfw.egl.display = eglGetDisplay(_glfw.platform.getEGLNativeDisplay());
_glfw_free(attribs);
if (_glfw.egl.display == EGL_NO_DISPLAY)
{
_glfwInputError(GLFW_API_UNAVAILABLE,
"EGL: Failed to get EGL display: %s",
getEGLErrorString(eglGetError()));
_glfwTerminateEGL();
return GLFW_FALSE;
}
if (!eglInitialize(_glfw.egl.display, &_glfw.egl.major, &_glfw.egl.minor))
{
_glfwInputError(GLFW_API_UNAVAILABLE,
"EGL: Failed to initialize EGL: %s",
getEGLErrorString(eglGetError()));
_glfwTerminateEGL();
return GLFW_FALSE;
}
_glfw.egl.KHR_create_context =
extensionSupportedEGL("EGL_KHR_create_context");
_glfw.egl.KHR_create_context_no_error =
extensionSupportedEGL("EGL_KHR_create_context_no_error");
_glfw.egl.KHR_gl_colorspace =
extensionSupportedEGL("EGL_KHR_gl_colorspace");
_glfw.egl.KHR_get_all_proc_addresses =
extensionSupportedEGL("EGL_KHR_get_all_proc_addresses");
_glfw.egl.KHR_context_flush_control =
extensionSupportedEGL("EGL_KHR_context_flush_control");
_glfw.egl.EXT_present_opaque =
extensionSupportedEGL("EGL_EXT_present_opaque");
return GLFW_TRUE;
}
// Terminate EGL
//
void _glfwTerminateEGL(void)
{
if (_glfw.egl.display)
{
eglTerminate(_glfw.egl.display);
_glfw.egl.display = EGL_NO_DISPLAY;
}
if (_glfw.egl.handle)
{
_glfwPlatformFreeModule(_glfw.egl.handle);
_glfw.egl.handle = NULL;
}
}
#define SET_ATTRIB(a, v) \
{ \
assert(((size_t) index + 1) < sizeof(attribs) / sizeof(attribs[0])); \
attribs[index++] = a; \
attribs[index++] = v; \
}
// Create the OpenGL or OpenGL ES context
//
GLFWbool _glfwCreateContextEGL(_GLFWwindow* window,
const _GLFWctxconfig* ctxconfig,
const _GLFWfbconfig* fbconfig)
{
EGLint attribs[40];
EGLConfig config;
EGLContext share = NULL;
EGLNativeWindowType native;
int index = 0;
if (!_glfw.egl.display)
{
_glfwInputError(GLFW_API_UNAVAILABLE, "EGL: API not available");
return GLFW_FALSE;
}
if (ctxconfig->share)
share = ctxconfig->share->context.egl.handle;
if (!chooseEGLConfig(ctxconfig, fbconfig, &config))
return GLFW_FALSE;
if (ctxconfig->client == GLFW_OPENGL_ES_API)
{
if (!eglBindAPI(EGL_OPENGL_ES_API))
{
_glfwInputError(GLFW_API_UNAVAILABLE,
"EGL: Failed to bind OpenGL ES: %s",
getEGLErrorString(eglGetError()));
return GLFW_FALSE;
}
}
else
{
if (!eglBindAPI(EGL_OPENGL_API))
{
_glfwInputError(GLFW_API_UNAVAILABLE,
"EGL: Failed to bind OpenGL: %s",
getEGLErrorString(eglGetError()));
return GLFW_FALSE;
}
}
if (_glfw.egl.KHR_create_context)
{
int mask = 0, flags = 0;
if (ctxconfig->client == GLFW_OPENGL_API)
{
if (ctxconfig->forward)
flags |= EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR;
if (ctxconfig->profile == GLFW_OPENGL_CORE_PROFILE)
mask |= EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR;
else if (ctxconfig->profile == GLFW_OPENGL_COMPAT_PROFILE)
mask |= EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR;
}
if (ctxconfig->debug)
flags |= EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR;
if (ctxconfig->robustness)
{
if (ctxconfig->robustness == GLFW_NO_RESET_NOTIFICATION)
{
SET_ATTRIB(EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR,
EGL_NO_RESET_NOTIFICATION_KHR);
}
else if (ctxconfig->robustness == GLFW_LOSE_CONTEXT_ON_RESET)
{
SET_ATTRIB(EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR,
EGL_LOSE_CONTEXT_ON_RESET_KHR);
}
flags |= EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR;
}
if (ctxconfig->noerror)
{
if (_glfw.egl.KHR_create_context_no_error)
SET_ATTRIB(EGL_CONTEXT_OPENGL_NO_ERROR_KHR, GLFW_TRUE);
}
if (ctxconfig->major != 1 || ctxconfig->minor != 0)
{
SET_ATTRIB(EGL_CONTEXT_MAJOR_VERSION_KHR, ctxconfig->major);
SET_ATTRIB(EGL_CONTEXT_MINOR_VERSION_KHR, ctxconfig->minor);
}
if (mask)
SET_ATTRIB(EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR, mask);
if (flags)
SET_ATTRIB(EGL_CONTEXT_FLAGS_KHR, flags);
}
else
{
if (ctxconfig->client == GLFW_OPENGL_ES_API)
SET_ATTRIB(EGL_CONTEXT_CLIENT_VERSION, ctxconfig->major);
}
if (_glfw.egl.KHR_context_flush_control)
{
if (ctxconfig->release == GLFW_RELEASE_BEHAVIOR_NONE)
{
SET_ATTRIB(EGL_CONTEXT_RELEASE_BEHAVIOR_KHR,
EGL_CONTEXT_RELEASE_BEHAVIOR_NONE_KHR);
}
else if (ctxconfig->release == GLFW_RELEASE_BEHAVIOR_FLUSH)
{
SET_ATTRIB(EGL_CONTEXT_RELEASE_BEHAVIOR_KHR,
EGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR);
}
}
SET_ATTRIB(EGL_NONE, EGL_NONE);
window->context.egl.handle = eglCreateContext(_glfw.egl.display,
config, share, attribs);
if (window->context.egl.handle == EGL_NO_CONTEXT)
{
_glfwInputError(GLFW_VERSION_UNAVAILABLE,
"EGL: Failed to create context: %s",
getEGLErrorString(eglGetError()));
return GLFW_FALSE;
}
// Set up attributes for surface creation
index = 0;
if (fbconfig->sRGB)
{
if (_glfw.egl.KHR_gl_colorspace)
SET_ATTRIB(EGL_GL_COLORSPACE_KHR, EGL_GL_COLORSPACE_SRGB_KHR);
}
if (!fbconfig->doublebuffer)
SET_ATTRIB(EGL_RENDER_BUFFER, EGL_SINGLE_BUFFER);
if (_glfw.egl.EXT_present_opaque)
SET_ATTRIB(EGL_PRESENT_OPAQUE_EXT, !fbconfig->transparent);
SET_ATTRIB(EGL_NONE, EGL_NONE);
native = _glfw.platform.getEGLNativeWindow(window);
// HACK: ANGLE does not implement eglCreatePlatformWindowSurfaceEXT
// despite reporting EGL_EXT_platform_base
if (_glfw.egl.platform && _glfw.egl.platform != EGL_PLATFORM_ANGLE_ANGLE)
{
window->context.egl.surface =
eglCreatePlatformWindowSurfaceEXT(_glfw.egl.display, config, native, attribs);
}
else
{
window->context.egl.surface =
eglCreateWindowSurface(_glfw.egl.display, config, native, attribs);
}
if (window->context.egl.surface == EGL_NO_SURFACE)
{
_glfwInputError(GLFW_PLATFORM_ERROR,
"EGL: Failed to create window surface: %s",
getEGLErrorString(eglGetError()));
return GLFW_FALSE;
}
window->context.egl.config = config;
// Load the appropriate client library
if (!_glfw.egl.KHR_get_all_proc_addresses)
{
int i;
const char** sonames;
const char* es1sonames[] =
{
#if defined(_GLFW_GLESV1_LIBRARY)
_GLFW_GLESV1_LIBRARY,
#elif defined(_GLFW_WIN32)
"GLESv1_CM.dll",
"libGLES_CM.dll",
#elif defined(_GLFW_COCOA)
"libGLESv1_CM.dylib",
#elif defined(__OpenBSD__) || defined(__NetBSD__)
"libGLESv1_CM.so",
#else
"libGLESv1_CM.so.1",
"libGLES_CM.so.1",
#endif
NULL
};
const char* es2sonames[] =
{
#if defined(_GLFW_GLESV2_LIBRARY)
_GLFW_GLESV2_LIBRARY,
#elif defined(_GLFW_WIN32)
"GLESv2.dll",
"libGLESv2.dll",
#elif defined(_GLFW_COCOA)
"libGLESv2.dylib",
#elif defined(__CYGWIN__)
"libGLESv2-2.so",
#elif defined(__OpenBSD__) || defined(__NetBSD__)
"libGLESv2.so",
#else
"libGLESv2.so.2",
#endif
NULL
};
const char* glsonames[] =
{
#if defined(_GLFW_OPENGL_LIBRARY)
_GLFW_OPENGL_LIBRARY,
#elif defined(_GLFW_WIN32)
#elif defined(_GLFW_COCOA)
#elif defined(__OpenBSD__) || defined(__NetBSD__)
"libGL.so",
#else
"libOpenGL.so.0",
"libGL.so.1",
#endif
NULL
};
if (ctxconfig->client == GLFW_OPENGL_ES_API)
{
if (ctxconfig->major == 1)
sonames = es1sonames;
else
sonames = es2sonames;
}
else
sonames = glsonames;
for (i = 0; sonames[i]; i++)
{
// HACK: Match presence of lib prefix to increase chance of finding
// a matching pair in the jungle that is Win32 EGL/GLES
if (_glfw.egl.prefix != (strncmp(sonames[i], "lib", 3) == 0))
continue;
window->context.egl.client = _glfwPlatformLoadModule(sonames[i]);
if (window->context.egl.client)
break;
}
if (!window->context.egl.client)
{
_glfwInputError(GLFW_API_UNAVAILABLE,
"EGL: Failed to load client library");
return GLFW_FALSE;
}
}
window->context.makeCurrent = makeContextCurrentEGL;
window->context.swapBuffers = swapBuffersEGL;
window->context.swapInterval = swapIntervalEGL;
window->context.extensionSupported = extensionSupportedEGL;
window->context.getProcAddress = getProcAddressEGL;
window->context.destroy = destroyContextEGL;
return GLFW_TRUE;
}
#undef SET_ATTRIB
// Returns the Visual and depth of the chosen EGLConfig
//
#if defined(_GLFW_X11)
GLFWbool _glfwChooseVisualEGL(const _GLFWwndconfig* wndconfig,
const _GLFWctxconfig* ctxconfig,
const _GLFWfbconfig* fbconfig,
Visual** visual, int* depth)
{
XVisualInfo* result;
XVisualInfo desired;
EGLConfig native;
EGLint visualID = 0, count = 0;
const long vimask = VisualScreenMask | VisualIDMask;
if (!chooseEGLConfig(ctxconfig, fbconfig, &native))
return GLFW_FALSE;
eglGetConfigAttrib(_glfw.egl.display, native,
EGL_NATIVE_VISUAL_ID, &visualID);
desired.screen = _glfw.x11.screen;
desired.visualid = visualID;
result = XGetVisualInfo(_glfw.x11.display, vimask, &desired, &count);
if (!result)
{
_glfwInputError(GLFW_PLATFORM_ERROR,
"EGL: Failed to retrieve Visual for EGLConfig");
return GLFW_FALSE;
}
*visual = result->visual;
*depth = result->depth;
XFree(result);
return GLFW_TRUE;
}
#endif // _GLFW_X11
//////////////////////////////////////////////////////////////////////////
////// GLFW native API //////
//////////////////////////////////////////////////////////////////////////
SSCAPI EGLDisplay glfwGetEGLDisplay(void)
{
_GLFW_REQUIRE_INIT_OR_RETURN(EGL_NO_DISPLAY);
return _glfw.egl.display;
}
SSCAPI EGLContext glfwGetEGLContext(GLFWwindow* handle)
{
_GLFWwindow* window = (_GLFWwindow*)handle;
_GLFW_REQUIRE_INIT_OR_RETURN(EGL_NO_CONTEXT);
if (window->context.source != GLFW_EGL_CONTEXT_API)
{
_glfwInputError(GLFW_NO_WINDOW_CONTEXT, NULL);
return EGL_NO_CONTEXT;
}
return window->context.egl.handle;
}
SSCAPI EGLSurface glfwGetEGLSurface(GLFWwindow* handle)
{
_GLFWwindow* window = (_GLFWwindow*)handle;
_GLFW_REQUIRE_INIT_OR_RETURN(EGL_NO_SURFACE);
if (window->context.source != GLFW_EGL_CONTEXT_API)
{
_glfwInputError(GLFW_NO_WINDOW_CONTEXT, NULL);
return EGL_NO_SURFACE;
}
return window->context.egl.surface;
}
+550
View File
@@ -0,0 +1,550 @@
//========================================================================
// GLFW 3.4 - www.glfw.org
//------------------------------------------------------------------------
// Copyright (c) 2002-2006 Marcus Geelnard
// Copyright (c) 2006-2018 Camilla Löwy <elmindreda@glfw.org>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would
// be appreciated but is not required.
//
// 2. Altered source versions must be plainly marked as such, and must not
// be misrepresented as being the original software.
//
// 3. This notice may not be removed or altered from any source
// distribution.
//
//========================================================================
// Please use C89 style variable declarations in this file because VS 2010
//========================================================================
#include "glfw_internal.h"
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
#include <assert.h>
// NOTE: The global variables below comprise all mutable global data in GLFW
// Any other mutable global variable is a bug
// This contains all mutable state shared between compilation units of GLFW
//
_GLFWlibrary _glfw = { GLFW_FALSE };
// These are outside of _glfw so they can be used before initialization and
// after termination without special handling when _glfw is cleared to zero
//
static _GLFWerror _glfwMainThreadError;
static GLFWerrorfun _glfwErrorCallback;
static GLFWallocator _glfwInitAllocator;
static _GLFWinitconfig _glfwInitHints =
{
GLFW_TRUE, // hat buttons
GLFW_ANGLE_PLATFORM_TYPE_NONE, // ANGLE backend
GLFW_ANY_PLATFORM, // preferred platform
NULL, // vkGetInstanceProcAddr function
{
GLFW_TRUE, // macOS menu bar
GLFW_TRUE // macOS bundle chdir
},
{
GLFW_TRUE, // X11 XCB Vulkan surface
},
{
GLFW_WAYLAND_PREFER_LIBDECOR // Wayland libdecor mode
},
};
// The allocation function used when no custom allocator is set
//
static void* defaultAllocate(size_t size, void* user)
{
return malloc(size);
}
// The deallocation function used when no custom allocator is set
//
static void defaultDeallocate(void* block, void* user)
{
free(block);
}
// The reallocation function used when no custom allocator is set
//
static void* defaultReallocate(void* block, size_t size, void* user)
{
return realloc(block, size);
}
// Terminate the library
//
static void terminate(void)
{
int i;
memset(&_glfw.callbacks, 0, sizeof(_glfw.callbacks));
while (_glfw.windowListHead)
glfwDestroyWindow((GLFWwindow*)_glfw.windowListHead);
while (_glfw.cursorListHead)
glfwDestroyCursor((GLFWcursor*)_glfw.cursorListHead);
for (i = 0; i < _glfw.monitorCount; i++)
{
_GLFWmonitor* monitor = _glfw.monitors[i];
if (monitor->originalRamp.size)
_glfw.platform.setGammaRamp(monitor, &monitor->originalRamp);
_glfwFreeMonitor(monitor);
}
_glfw_free(_glfw.monitors);
_glfw.monitors = NULL;
_glfw.monitorCount = 0;
_glfw_free(_glfw.mappings);
_glfw.mappings = NULL;
_glfw.mappingCount = 0;
_glfwTerminateVulkan();
_glfw.platform.terminateJoysticks();
_glfw.platform.terminate();
_glfw.initialized = GLFW_FALSE;
while (_glfw.errorListHead)
{
_GLFWerror* error = _glfw.errorListHead;
_glfw.errorListHead = error->next;
_glfw_free(error);
}
_glfwPlatformDestroyTls(&_glfw.contextSlot);
_glfwPlatformDestroyTls(&_glfw.errorSlot);
_glfwPlatformDestroyMutex(&_glfw.errorLock);
memset(&_glfw, 0, sizeof(_glfw));
}
//////////////////////////////////////////////////////////////////////////
////// GLFW internal API //////
//////////////////////////////////////////////////////////////////////////
// Encode a Unicode code point to a UTF-8 stream
// Based on cutef8 by Jeff Bezanson (Public Domain)
//
size_t _glfwEncodeUTF8(char* s, uint32_t codepoint)
{
size_t count = 0;
if (codepoint < 0x80)
s[count++] = (char)codepoint;
else if (codepoint < 0x800)
{
s[count++] = (codepoint >> 6) | 0xc0;
s[count++] = (codepoint & 0x3f) | 0x80;
}
else if (codepoint < 0x10000)
{
s[count++] = (codepoint >> 12) | 0xe0;
s[count++] = ((codepoint >> 6) & 0x3f) | 0x80;
s[count++] = (codepoint & 0x3f) | 0x80;
}
else if (codepoint < 0x110000)
{
s[count++] = (codepoint >> 18) | 0xf0;
s[count++] = ((codepoint >> 12) & 0x3f) | 0x80;
s[count++] = ((codepoint >> 6) & 0x3f) | 0x80;
s[count++] = (codepoint & 0x3f) | 0x80;
}
return count;
}
// Splits and translates a text/uri-list into separate file paths
// NOTE: This function destroys the provided string
//
char** _glfwParseUriList(char* text, int* count)
{
const char* prefix = "file://";
char** paths = NULL;
char* line;
*count = 0;
while ((line = strtok(text, "\r\n")))
{
char* path;
text = NULL;
if (line[0] == '#')
continue;
if (strncmp(line, prefix, strlen(prefix)) == 0)
{
line += strlen(prefix);
// TODO: Validate hostname
while (*line != '/')
line++;
}
(*count)++;
path = _glfw_calloc(strlen(line) + 1, 1);
paths = _glfw_realloc(paths, *count * sizeof(char*));
paths[*count - 1] = path;
while (*line)
{
if (line[0] == '%' && line[1] && line[2])
{
const char digits[3] = { line[1], line[2], '\0' };
*path = (char)strtol(digits, NULL, 16);
line += 2;
}
else
*path = *line;
path++;
line++;
}
}
return paths;
}
char* _glfw_strdup(const char* source)
{
const size_t length = strlen(source);
char* result = _glfw_calloc(length + 1, 1);
strcpy(result, source);
return result;
}
int _glfw_min(int a, int b)
{
return a < b ? a : b;
}
int _glfw_max(int a, int b)
{
return a > b ? a : b;
}
float _glfw_fminf(float a, float b)
{
if (a != a)
return b;
else if (b != b)
return a;
else if (a < b)
return a;
else
return b;
}
float _glfw_fmaxf(float a, float b)
{
if (a != a)
return b;
else if (b != b)
return a;
else if (a > b)
return a;
else
return b;
}
void* _glfw_calloc(size_t count, size_t size)
{
if (count && size)
{
void* block;
if (count > SIZE_MAX / size)
{
_glfwInputError(GLFW_INVALID_VALUE, "Allocation size overflow");
return NULL;
}
block = _glfw.allocator.allocate(count * size, _glfw.allocator.user);
if (block)
return memset(block, 0, count * size);
else
{
_glfwInputError(GLFW_OUT_OF_MEMORY, NULL);
return NULL;
}
}
else
return NULL;
}
void* _glfw_realloc(void* block, size_t size)
{
if (block && size)
{
void* resized = _glfw.allocator.reallocate(block, size, _glfw.allocator.user);
if (resized)
return resized;
else
{
_glfwInputError(GLFW_OUT_OF_MEMORY, NULL);
return NULL;
}
}
else if (block)
{
_glfw_free(block);
return NULL;
}
else
return _glfw_calloc(1, size);
}
void _glfw_free(void* block)
{
if (block)
_glfw.allocator.deallocate(block, _glfw.allocator.user);
}
//////////////////////////////////////////////////////////////////////////
////// GLFW event API //////
//////////////////////////////////////////////////////////////////////////
// Notifies shared code of an error
//
void _glfwInputError(int code, const char* format, ...)
{
_GLFWerror* error;
char description[_GLFW_MESSAGE_SIZE];
if (format)
{
va_list vl;
va_start(vl, format);
vsnprintf(description, sizeof(description), format, vl);
va_end(vl);
description[sizeof(description) - 1] = '\0';
}
else
{
if (code == GLFW_NOT_INITIALIZED)
strcpy(description, "The GLFW library is not initialized");
else if (code == GLFW_NO_CURRENT_CONTEXT)
strcpy(description, "There is no current context");
else if (code == GLFW_INVALID_ENUM)
strcpy(description, "Invalid argument for enum parameter");
else if (code == GLFW_INVALID_VALUE)
strcpy(description, "Invalid value for parameter");
else if (code == GLFW_OUT_OF_MEMORY)
strcpy(description, "Out of memory");
else if (code == GLFW_API_UNAVAILABLE)
strcpy(description, "The requested API is unavailable");
else if (code == GLFW_VERSION_UNAVAILABLE)
strcpy(description, "The requested API version is unavailable");
else if (code == GLFW_PLATFORM_ERROR)
strcpy(description, "A platform-specific error occurred");
else if (code == GLFW_FORMAT_UNAVAILABLE)
strcpy(description, "The requested format is unavailable");
else if (code == GLFW_NO_WINDOW_CONTEXT)
strcpy(description, "The specified window has no context");
else if (code == GLFW_CURSOR_UNAVAILABLE)
strcpy(description, "The specified cursor shape is unavailable");
else if (code == GLFW_FEATURE_UNAVAILABLE)
strcpy(description, "The requested feature cannot be implemented for this platform");
else if (code == GLFW_FEATURE_UNIMPLEMENTED)
strcpy(description, "The requested feature has not yet been implemented for this platform");
else if (code == GLFW_PLATFORM_UNAVAILABLE)
strcpy(description, "The requested platform is unavailable");
else
strcpy(description, "ERROR: UNKNOWN GLFW ERROR");
}
if (_glfw.initialized)
{
error = _glfwPlatformGetTls(&_glfw.errorSlot);
if (!error)
{
error = _glfw_calloc(1, sizeof(_GLFWerror));
_glfwPlatformSetTls(&_glfw.errorSlot, error);
_glfwPlatformLockMutex(&_glfw.errorLock);
error->next = _glfw.errorListHead;
_glfw.errorListHead = error;
_glfwPlatformUnlockMutex(&_glfw.errorLock);
}
}
else
error = &_glfwMainThreadError;
error->code = code;
strcpy(error->description, description);
if (_glfwErrorCallback)
_glfwErrorCallback(code, description);
}
//////////////////////////////////////////////////////////////////////////
////// GLFW public API //////
//////////////////////////////////////////////////////////////////////////
SSCAPI int glfwInit(void)
{
if (_glfw.initialized)
return GLFW_TRUE;
memset(&_glfw, 0, sizeof(_glfw));
_glfw.hints.init = _glfwInitHints;
_glfw.allocator = _glfwInitAllocator;
if (!_glfw.allocator.allocate)
{
_glfw.allocator.allocate = defaultAllocate;
_glfw.allocator.reallocate = defaultReallocate;
_glfw.allocator.deallocate = defaultDeallocate;
}
if (!_glfwSelectPlatform(_glfw.hints.init.platformID, &_glfw.platform))
return GLFW_FALSE;
if (!_glfw.platform.init())
{
terminate();
return GLFW_FALSE;
}
if (!_glfwPlatformCreateMutex(&_glfw.errorLock) ||
!_glfwPlatformCreateTls(&_glfw.errorSlot) ||
!_glfwPlatformCreateTls(&_glfw.contextSlot))
{
terminate();
return GLFW_FALSE;
}
_glfwPlatformSetTls(&_glfw.errorSlot, &_glfwMainThreadError);
_glfwInitGamepadMappings();
_glfwPlatformInitTimer();
_glfw.timer.offset = _glfwPlatformGetTimerValue();
_glfw.initialized = GLFW_TRUE;
glfwDefaultWindowHints();
return GLFW_TRUE;
}
SSCAPI void glfwTerminate(void)
{
if (!_glfw.initialized)
return;
terminate();
}
SSCAPI void glfwInitHint(int hint, int value)
{
switch (hint)
{
case GLFW_JOYSTICK_HAT_BUTTONS:
_glfwInitHints.hatButtons = value;
return;
case GLFW_ANGLE_PLATFORM_TYPE:
_glfwInitHints.angleType = value;
return;
case GLFW_PLATFORM:
_glfwInitHints.platformID = value;
return;
case GLFW_COCOA_CHDIR_RESOURCES:
_glfwInitHints.ns.chdir = value;
return;
case GLFW_COCOA_MENUBAR:
_glfwInitHints.ns.menubar = value;
return;
case GLFW_X11_XCB_VULKAN_SURFACE:
_glfwInitHints.x11.xcbVulkanSurface = value;
return;
case GLFW_WAYLAND_LIBDECOR:
_glfwInitHints.wl.libdecorMode = value;
return;
}
_glfwInputError(GLFW_INVALID_ENUM,
"Invalid init hint 0x%08X", hint);
}
SSCAPI void glfwInitAllocator(const GLFWallocator* allocator)
{
if (allocator)
{
if (allocator->allocate && allocator->reallocate && allocator->deallocate)
_glfwInitAllocator = *allocator;
else
_glfwInputError(GLFW_INVALID_VALUE, "Missing function in allocator");
}
else
memset(&_glfwInitAllocator, 0, sizeof(GLFWallocator));
}
SSCAPI void glfwInitVulkanLoader(PFN_vkGetInstanceProcAddr loader)
{
_glfwInitHints.vulkanLoader = loader;
}
SSCAPI void glfwGetVersion(int* major, int* minor, int* rev)
{
if (major != NULL)
*major = GLFW_VERSION_MAJOR;
if (minor != NULL)
*minor = GLFW_VERSION_MINOR;
if (rev != NULL)
*rev = GLFW_VERSION_REVISION;
}
SSCAPI int glfwGetError(const char** description)
{
_GLFWerror* error;
int code = GLFW_NO_ERROR;
if (description)
*description = NULL;
if (_glfw.initialized)
error = _glfwPlatformGetTls(&_glfw.errorSlot);
else
error = &_glfwMainThreadError;
if (error)
{
code = error->code;
error->code = GLFW_NO_ERROR;
if (description && code)
*description = error->description;
}
return code;
}
SSCAPI GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun cbfun)
{
_GLFW_SWAP(GLFWerrorfun, _glfwErrorCallback, cbfun);
return cbfun;
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,548 @@
//========================================================================
// GLFW 3.4 - www.glfw.org
//------------------------------------------------------------------------
// Copyright (c) 2002-2006 Marcus Geelnard
// Copyright (c) 2006-2019 Camilla Löwy <elmindreda@glfw.org>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would
// be appreciated but is not required.
//
// 2. Altered source versions must be plainly marked as such, and must not
// be misrepresented as being the original software.
//
// 3. This notice may not be removed or altered from any source
// distribution.
//
//========================================================================
// Please use C89 style variable declarations in this file because VS 2010
//========================================================================
#include "glfw_internal.h"
#include <assert.h>
#include <math.h>
#include <float.h>
#include <string.h>
#include <stdlib.h>
#include <limits.h>
// Lexically compare video modes, used by qsort
//
static int compareVideoModes(const void* fp, const void* sp)
{
const GLFWvidmode* fm = fp;
const GLFWvidmode* sm = sp;
const int fbpp = fm->redBits + fm->greenBits + fm->blueBits;
const int sbpp = sm->redBits + sm->greenBits + sm->blueBits;
const int farea = fm->width * fm->height;
const int sarea = sm->width * sm->height;
// First sort on color bits per pixel
if (fbpp != sbpp)
return fbpp - sbpp;
// Then sort on screen area
if (farea != sarea)
return farea - sarea;
// Then sort on width
if (fm->width != sm->width)
return fm->width - sm->width;
// Lastly sort on refresh rate
return fm->refreshRate - sm->refreshRate;
}
// Retrieves the available modes for the specified monitor
//
static GLFWbool refreshVideoModes(_GLFWmonitor* monitor)
{
int modeCount;
GLFWvidmode* modes;
if (monitor->modes)
return GLFW_TRUE;
modes = _glfw.platform.getVideoModes(monitor, &modeCount);
if (!modes)
return GLFW_FALSE;
qsort(modes, modeCount, sizeof(GLFWvidmode), compareVideoModes);
_glfw_free(monitor->modes);
monitor->modes = modes;
monitor->modeCount = modeCount;
return GLFW_TRUE;
}
//////////////////////////////////////////////////////////////////////////
////// GLFW event API //////
//////////////////////////////////////////////////////////////////////////
// Notifies shared code of a monitor connection or disconnection
//
void _glfwInputMonitor(_GLFWmonitor* monitor, int action, int placement)
{
assert(monitor != NULL);
assert(action == GLFW_CONNECTED || action == GLFW_DISCONNECTED);
assert(placement == _GLFW_INSERT_FIRST || placement == _GLFW_INSERT_LAST);
if (action == GLFW_CONNECTED)
{
_glfw.monitorCount++;
_glfw.monitors =
_glfw_realloc(_glfw.monitors,
sizeof(_GLFWmonitor*) * _glfw.monitorCount);
if (placement == _GLFW_INSERT_FIRST)
{
memmove(_glfw.monitors + 1,
_glfw.monitors,
((size_t) _glfw.monitorCount - 1) * sizeof(_GLFWmonitor*));
_glfw.monitors[0] = monitor;
}
else
_glfw.monitors[_glfw.monitorCount - 1] = monitor;
}
else if (action == GLFW_DISCONNECTED)
{
int i;
_GLFWwindow* window;
for (window = _glfw.windowListHead; window; window = window->next)
{
if (window->monitor == monitor)
{
int width, height, xoff, yoff;
_glfw.platform.getWindowSize(window, &width, &height);
_glfw.platform.setWindowMonitor(window, NULL, 0, 0, width, height, 0);
_glfw.platform.getWindowFrameSize(window, &xoff, &yoff, NULL, NULL);
_glfw.platform.setWindowPos(window, xoff, yoff);
}
}
for (i = 0; i < _glfw.monitorCount; i++)
{
if (_glfw.monitors[i] == monitor)
{
_glfw.monitorCount--;
memmove(_glfw.monitors + i,
_glfw.monitors + i + 1,
((size_t) _glfw.monitorCount - i) * sizeof(_GLFWmonitor*));
break;
}
}
}
if (_glfw.callbacks.monitor)
_glfw.callbacks.monitor((GLFWmonitor*) monitor, action);
if (action == GLFW_DISCONNECTED)
_glfwFreeMonitor(monitor);
}
// Notifies shared code that a full screen window has acquired or released
// a monitor
//
void _glfwInputMonitorWindow(_GLFWmonitor* monitor, _GLFWwindow* window)
{
assert(monitor != NULL);
monitor->window = window;
}
//////////////////////////////////////////////////////////////////////////
////// GLFW internal API //////
//////////////////////////////////////////////////////////////////////////
// Allocates and returns a monitor object with the specified name and dimensions
//
_GLFWmonitor* _glfwAllocMonitor(const char* name, int widthMM, int heightMM)
{
_GLFWmonitor* monitor = _glfw_calloc(1, sizeof(_GLFWmonitor));
monitor->widthMM = widthMM;
monitor->heightMM = heightMM;
strncpy(monitor->name, name, sizeof(monitor->name) - 1);
return monitor;
}
// Frees a monitor object and any data associated with it
//
void _glfwFreeMonitor(_GLFWmonitor* monitor)
{
if (monitor == NULL)
return;
_glfw.platform.freeMonitor(monitor);
_glfwFreeGammaArrays(&monitor->originalRamp);
_glfwFreeGammaArrays(&monitor->currentRamp);
_glfw_free(monitor->modes);
_glfw_free(monitor);
}
// Allocates red, green and blue value arrays of the specified size
//
void _glfwAllocGammaArrays(GLFWgammaramp* ramp, unsigned int size)
{
ramp->red = _glfw_calloc(size, sizeof(unsigned short));
ramp->green = _glfw_calloc(size, sizeof(unsigned short));
ramp->blue = _glfw_calloc(size, sizeof(unsigned short));
ramp->size = size;
}
// Frees the red, green and blue value arrays and clears the struct
//
void _glfwFreeGammaArrays(GLFWgammaramp* ramp)
{
_glfw_free(ramp->red);
_glfw_free(ramp->green);
_glfw_free(ramp->blue);
memset(ramp, 0, sizeof(GLFWgammaramp));
}
// Chooses the video mode most closely matching the desired one
//
const GLFWvidmode* _glfwChooseVideoMode(_GLFWmonitor* monitor,
const GLFWvidmode* desired)
{
int i;
unsigned int sizeDiff, leastSizeDiff = UINT_MAX;
unsigned int rateDiff, leastRateDiff = UINT_MAX;
unsigned int colorDiff, leastColorDiff = UINT_MAX;
const GLFWvidmode* current;
const GLFWvidmode* closest = NULL;
if (!refreshVideoModes(monitor))
return NULL;
for (i = 0; i < monitor->modeCount; i++)
{
current = monitor->modes + i;
colorDiff = 0;
if (desired->redBits != GLFW_DONT_CARE)
colorDiff += abs(current->redBits - desired->redBits);
if (desired->greenBits != GLFW_DONT_CARE)
colorDiff += abs(current->greenBits - desired->greenBits);
if (desired->blueBits != GLFW_DONT_CARE)
colorDiff += abs(current->blueBits - desired->blueBits);
sizeDiff = abs((current->width - desired->width) *
(current->width - desired->width) +
(current->height - desired->height) *
(current->height - desired->height));
if (desired->refreshRate != GLFW_DONT_CARE)
rateDiff = abs(current->refreshRate - desired->refreshRate);
else
rateDiff = UINT_MAX - current->refreshRate;
if ((colorDiff < leastColorDiff) ||
(colorDiff == leastColorDiff && sizeDiff < leastSizeDiff) ||
(colorDiff == leastColorDiff && sizeDiff == leastSizeDiff && rateDiff < leastRateDiff))
{
closest = current;
leastSizeDiff = sizeDiff;
leastRateDiff = rateDiff;
leastColorDiff = colorDiff;
}
}
return closest;
}
// Performs lexical comparison between two @ref GLFWvidmode structures
//
int _glfwCompareVideoModes(const GLFWvidmode* fm, const GLFWvidmode* sm)
{
return compareVideoModes(fm, sm);
}
// Splits a color depth into red, green and blue bit depths
//
void _glfwSplitBPP(int bpp, int* red, int* green, int* blue)
{
int delta;
// We assume that by 32 the user really meant 24
if (bpp == 32)
bpp = 24;
// Convert "bits per pixel" to red, green & blue sizes
*red = *green = *blue = bpp / 3;
delta = bpp - (*red * 3);
if (delta >= 1)
*green = *green + 1;
if (delta == 2)
*red = *red + 1;
}
//////////////////////////////////////////////////////////////////////////
////// GLFW public API //////
//////////////////////////////////////////////////////////////////////////
SSCAPI GLFWmonitor** glfwGetMonitors(int* count)
{
assert(count != NULL);
*count = 0;
_GLFW_REQUIRE_INIT_OR_RETURN(NULL);
*count = _glfw.monitorCount;
return (GLFWmonitor**) _glfw.monitors;
}
SSCAPI GLFWmonitor* glfwGetPrimaryMonitor(void)
{
_GLFW_REQUIRE_INIT_OR_RETURN(NULL);
if (!_glfw.monitorCount)
return NULL;
return (GLFWmonitor*) _glfw.monitors[0];
}
SSCAPI void glfwGetMonitorPos(GLFWmonitor* handle, int* xpos, int* ypos)
{
_GLFWmonitor* monitor = (_GLFWmonitor*) handle;
assert(monitor != NULL);
if (xpos)
*xpos = 0;
if (ypos)
*ypos = 0;
_GLFW_REQUIRE_INIT();
_glfw.platform.getMonitorPos(monitor, xpos, ypos);
}
SSCAPI void glfwGetMonitorWorkarea(GLFWmonitor* handle,
int* xpos, int* ypos,
int* width, int* height)
{
_GLFWmonitor* monitor = (_GLFWmonitor*) handle;
assert(monitor != NULL);
if (xpos)
*xpos = 0;
if (ypos)
*ypos = 0;
if (width)
*width = 0;
if (height)
*height = 0;
_GLFW_REQUIRE_INIT();
_glfw.platform.getMonitorWorkarea(monitor, xpos, ypos, width, height);
}
SSCAPI void glfwGetMonitorPhysicalSize(GLFWmonitor* handle, int* widthMM, int* heightMM)
{
_GLFWmonitor* monitor = (_GLFWmonitor*) handle;
assert(monitor != NULL);
if (widthMM)
*widthMM = 0;
if (heightMM)
*heightMM = 0;
_GLFW_REQUIRE_INIT();
if (widthMM)
*widthMM = monitor->widthMM;
if (heightMM)
*heightMM = monitor->heightMM;
}
SSCAPI void glfwGetMonitorContentScale(GLFWmonitor* handle,
float* xscale, float* yscale)
{
_GLFWmonitor* monitor = (_GLFWmonitor*) handle;
assert(monitor != NULL);
if (xscale)
*xscale = 0.f;
if (yscale)
*yscale = 0.f;
_GLFW_REQUIRE_INIT();
_glfw.platform.getMonitorContentScale(monitor, xscale, yscale);
}
SSCAPI const char* glfwGetMonitorName(GLFWmonitor* handle)
{
_GLFWmonitor* monitor = (_GLFWmonitor*) handle;
assert(monitor != NULL);
_GLFW_REQUIRE_INIT_OR_RETURN(NULL);
return monitor->name;
}
SSCAPI void glfwSetMonitorUserPointer(GLFWmonitor* handle, void* pointer)
{
_GLFWmonitor* monitor = (_GLFWmonitor*) handle;
assert(monitor != NULL);
_GLFW_REQUIRE_INIT();
monitor->userPointer = pointer;
}
SSCAPI void* glfwGetMonitorUserPointer(GLFWmonitor* handle)
{
_GLFWmonitor* monitor = (_GLFWmonitor*) handle;
assert(monitor != NULL);
_GLFW_REQUIRE_INIT_OR_RETURN(NULL);
return monitor->userPointer;
}
SSCAPI GLFWmonitorfun glfwSetMonitorCallback(GLFWmonitorfun cbfun)
{
_GLFW_REQUIRE_INIT_OR_RETURN(NULL);
_GLFW_SWAP(GLFWmonitorfun, _glfw.callbacks.monitor, cbfun);
return cbfun;
}
SSCAPI const GLFWvidmode* glfwGetVideoModes(GLFWmonitor* handle, int* count)
{
_GLFWmonitor* monitor = (_GLFWmonitor*) handle;
assert(monitor != NULL);
assert(count != NULL);
*count = 0;
_GLFW_REQUIRE_INIT_OR_RETURN(NULL);
if (!refreshVideoModes(monitor))
return NULL;
*count = monitor->modeCount;
return monitor->modes;
}
SSCAPI const GLFWvidmode* glfwGetVideoMode(GLFWmonitor* handle)
{
_GLFWmonitor* monitor = (_GLFWmonitor*) handle;
assert(monitor != NULL);
_GLFW_REQUIRE_INIT_OR_RETURN(NULL);
_glfw.platform.getVideoMode(monitor, &monitor->currentMode);
return &monitor->currentMode;
}
SSCAPI void glfwSetGamma(GLFWmonitor* handle, float gamma)
{
unsigned int i;
unsigned short* values;
GLFWgammaramp ramp;
const GLFWgammaramp* original;
assert(handle != NULL);
assert(gamma > 0.f);
assert(gamma <= FLT_MAX);
_GLFW_REQUIRE_INIT();
if (gamma != gamma || gamma <= 0.f || gamma > FLT_MAX)
{
_glfwInputError(GLFW_INVALID_VALUE, "Invalid gamma value %f", gamma);
return;
}
original = glfwGetGammaRamp(handle);
if (!original)
return;
values = _glfw_calloc(original->size, sizeof(unsigned short));
for (i = 0; i < original->size; i++)
{
float value;
// Calculate intensity
value = i / (float) (original->size - 1);
// Apply gamma curve
value = powf(value, 1.f / gamma) * 65535.f + 0.5f;
// Clamp to value range
value = _glfw_fminf(value, 65535.f);
values[i] = (unsigned short) value;
}
ramp.red = values;
ramp.green = values;
ramp.blue = values;
ramp.size = original->size;
glfwSetGammaRamp(handle, &ramp);
_glfw_free(values);
}
SSCAPI const GLFWgammaramp* glfwGetGammaRamp(GLFWmonitor* handle)
{
_GLFWmonitor* monitor = (_GLFWmonitor*) handle;
assert(monitor != NULL);
_GLFW_REQUIRE_INIT_OR_RETURN(NULL);
_glfwFreeGammaArrays(&monitor->currentRamp);
if (!_glfw.platform.getGammaRamp(monitor, &monitor->currentRamp))
return NULL;
return &monitor->currentRamp;
}
SSCAPI void glfwSetGammaRamp(GLFWmonitor* handle, const GLFWgammaramp* ramp)
{
_GLFWmonitor* monitor = (_GLFWmonitor*) handle;
assert(monitor != NULL);
assert(ramp != NULL);
assert(ramp->size > 0);
assert(ramp->red != NULL);
assert(ramp->green != NULL);
assert(ramp->blue != NULL);
_GLFW_REQUIRE_INIT();
if (ramp->size <= 0)
{
_glfwInputError(GLFW_INVALID_VALUE,
"Invalid gamma ramp size %i",
ramp->size);
return;
}
if (!monitor->originalRamp.size)
{
if (!_glfw.platform.getGammaRamp(monitor, &monitor->originalRamp))
return;
}
_glfw.platform.setGammaRamp(monitor, ramp);
}
@@ -0,0 +1,266 @@
//========================================================================
// GLFW 3.4 - www.glfw.org
//------------------------------------------------------------------------
// Copyright (c) 2016 Google Inc.
// Copyright (c) 2016-2017 Camilla Löwy <elmindreda@glfw.org>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would
// be appreciated but is not required.
//
// 2. Altered source versions must be plainly marked as such, and must not
// be misrepresented as being the original software.
//
// 3. This notice may not be removed or altered from any source
// distribution.
//
//========================================================================
// It is fine to use C99 in this file because it will not be built with VS
//========================================================================
#include "glfw_internal.h"
#include <stdlib.h>
#include <string.h>
//////////////////////////////////////////////////////////////////////////
////// GLFW platform API //////
//////////////////////////////////////////////////////////////////////////
GLFWbool _glfwConnectNull(int platformID, _GLFWplatform* platform)
{
const _GLFWplatform null =
{
GLFW_PLATFORM_NULL,
_glfwInitNull,
_glfwTerminateNull,
_glfwGetCursorPosNull,
_glfwSetCursorPosNull,
_glfwSetCursorModeNull,
_glfwSetRawMouseMotionNull,
_glfwRawMouseMotionSupportedNull,
_glfwCreateCursorNull,
_glfwCreateStandardCursorNull,
_glfwDestroyCursorNull,
_glfwSetCursorNull,
_glfwGetScancodeNameNull,
_glfwGetKeyScancodeNull,
_glfwSetClipboardStringNull,
_glfwGetClipboardStringNull,
_glfwInitJoysticksNull,
_glfwTerminateJoysticksNull,
_glfwPollJoystickNull,
_glfwGetMappingNameNull,
_glfwUpdateGamepadGUIDNull,
_glfwFreeMonitorNull,
_glfwGetMonitorPosNull,
_glfwGetMonitorContentScaleNull,
_glfwGetMonitorWorkareaNull,
_glfwGetVideoModesNull,
_glfwGetVideoModeNull,
_glfwGetGammaRampNull,
_glfwSetGammaRampNull,
_glfwCreateWindowNull,
_glfwDestroyWindowNull,
_glfwSetWindowTitleNull,
_glfwSetWindowIconNull,
_glfwGetWindowPosNull,
_glfwSetWindowPosNull,
_glfwGetWindowSizeNull,
_glfwSetWindowSizeNull,
_glfwSetWindowSizeLimitsNull,
_glfwSetWindowAspectRatioNull,
_glfwGetFramebufferSizeNull,
_glfwGetWindowFrameSizeNull,
_glfwGetWindowContentScaleNull,
_glfwIconifyWindowNull,
_glfwRestoreWindowNull,
_glfwMaximizeWindowNull,
_glfwShowWindowNull,
_glfwHideWindowNull,
_glfwRequestWindowAttentionNull,
_glfwFocusWindowNull,
_glfwSetWindowMonitorNull,
_glfwWindowFocusedNull,
_glfwWindowIconifiedNull,
_glfwWindowVisibleNull,
_glfwWindowMaximizedNull,
_glfwWindowHoveredNull,
_glfwFramebufferTransparentNull,
_glfwGetWindowOpacityNull,
_glfwSetWindowResizableNull,
_glfwSetWindowDecoratedNull,
_glfwSetWindowFloatingNull,
_glfwSetWindowOpacityNull,
_glfwSetWindowMousePassthroughNull,
_glfwPollEventsNull,
_glfwWaitEventsNull,
_glfwWaitEventsTimeoutNull,
_glfwPostEmptyEventNull,
_glfwGetEGLPlatformNull,
_glfwGetEGLNativeDisplayNull,
_glfwGetEGLNativeWindowNull,
_glfwGetRequiredInstanceExtensionsNull,
_glfwGetPhysicalDevicePresentationSupportNull,
_glfwCreateWindowSurfaceNull,
};
*platform = null;
return GLFW_TRUE;
}
int _glfwInitNull(void)
{
int scancode;
memset(_glfw.null.keycodes, -1, sizeof(_glfw.null.keycodes));
memset(_glfw.null.scancodes, -1, sizeof(_glfw.null.scancodes));
_glfw.null.keycodes[GLFW_NULL_SC_SPACE] = GLFW_KEY_SPACE;
_glfw.null.keycodes[GLFW_NULL_SC_APOSTROPHE] = GLFW_KEY_APOSTROPHE;
_glfw.null.keycodes[GLFW_NULL_SC_COMMA] = GLFW_KEY_COMMA;
_glfw.null.keycodes[GLFW_NULL_SC_MINUS] = GLFW_KEY_MINUS;
_glfw.null.keycodes[GLFW_NULL_SC_PERIOD] = GLFW_KEY_PERIOD;
_glfw.null.keycodes[GLFW_NULL_SC_SLASH] = GLFW_KEY_SLASH;
_glfw.null.keycodes[GLFW_NULL_SC_0] = GLFW_KEY_0;
_glfw.null.keycodes[GLFW_NULL_SC_1] = GLFW_KEY_1;
_glfw.null.keycodes[GLFW_NULL_SC_2] = GLFW_KEY_2;
_glfw.null.keycodes[GLFW_NULL_SC_3] = GLFW_KEY_3;
_glfw.null.keycodes[GLFW_NULL_SC_4] = GLFW_KEY_4;
_glfw.null.keycodes[GLFW_NULL_SC_5] = GLFW_KEY_5;
_glfw.null.keycodes[GLFW_NULL_SC_6] = GLFW_KEY_6;
_glfw.null.keycodes[GLFW_NULL_SC_7] = GLFW_KEY_7;
_glfw.null.keycodes[GLFW_NULL_SC_8] = GLFW_KEY_8;
_glfw.null.keycodes[GLFW_NULL_SC_9] = GLFW_KEY_9;
_glfw.null.keycodes[GLFW_NULL_SC_SEMICOLON] = GLFW_KEY_SEMICOLON;
_glfw.null.keycodes[GLFW_NULL_SC_EQUAL] = GLFW_KEY_EQUAL;
_glfw.null.keycodes[GLFW_NULL_SC_A] = GLFW_KEY_A;
_glfw.null.keycodes[GLFW_NULL_SC_B] = GLFW_KEY_B;
_glfw.null.keycodes[GLFW_NULL_SC_C] = GLFW_KEY_C;
_glfw.null.keycodes[GLFW_NULL_SC_D] = GLFW_KEY_D;
_glfw.null.keycodes[GLFW_NULL_SC_E] = GLFW_KEY_E;
_glfw.null.keycodes[GLFW_NULL_SC_F] = GLFW_KEY_F;
_glfw.null.keycodes[GLFW_NULL_SC_G] = GLFW_KEY_G;
_glfw.null.keycodes[GLFW_NULL_SC_H] = GLFW_KEY_H;
_glfw.null.keycodes[GLFW_NULL_SC_I] = GLFW_KEY_I;
_glfw.null.keycodes[GLFW_NULL_SC_J] = GLFW_KEY_J;
_glfw.null.keycodes[GLFW_NULL_SC_K] = GLFW_KEY_K;
_glfw.null.keycodes[GLFW_NULL_SC_L] = GLFW_KEY_L;
_glfw.null.keycodes[GLFW_NULL_SC_M] = GLFW_KEY_M;
_glfw.null.keycodes[GLFW_NULL_SC_N] = GLFW_KEY_N;
_glfw.null.keycodes[GLFW_NULL_SC_O] = GLFW_KEY_O;
_glfw.null.keycodes[GLFW_NULL_SC_P] = GLFW_KEY_P;
_glfw.null.keycodes[GLFW_NULL_SC_Q] = GLFW_KEY_Q;
_glfw.null.keycodes[GLFW_NULL_SC_R] = GLFW_KEY_R;
_glfw.null.keycodes[GLFW_NULL_SC_S] = GLFW_KEY_S;
_glfw.null.keycodes[GLFW_NULL_SC_T] = GLFW_KEY_T;
_glfw.null.keycodes[GLFW_NULL_SC_U] = GLFW_KEY_U;
_glfw.null.keycodes[GLFW_NULL_SC_V] = GLFW_KEY_V;
_glfw.null.keycodes[GLFW_NULL_SC_W] = GLFW_KEY_W;
_glfw.null.keycodes[GLFW_NULL_SC_X] = GLFW_KEY_X;
_glfw.null.keycodes[GLFW_NULL_SC_Y] = GLFW_KEY_Y;
_glfw.null.keycodes[GLFW_NULL_SC_Z] = GLFW_KEY_Z;
_glfw.null.keycodes[GLFW_NULL_SC_LEFT_BRACKET] = GLFW_KEY_LEFT_BRACKET;
_glfw.null.keycodes[GLFW_NULL_SC_BACKSLASH] = GLFW_KEY_BACKSLASH;
_glfw.null.keycodes[GLFW_NULL_SC_RIGHT_BRACKET] = GLFW_KEY_RIGHT_BRACKET;
_glfw.null.keycodes[GLFW_NULL_SC_GRAVE_ACCENT] = GLFW_KEY_GRAVE_ACCENT;
_glfw.null.keycodes[GLFW_NULL_SC_WORLD_1] = GLFW_KEY_WORLD_1;
_glfw.null.keycodes[GLFW_NULL_SC_WORLD_2] = GLFW_KEY_WORLD_2;
_glfw.null.keycodes[GLFW_NULL_SC_ESCAPE] = GLFW_KEY_ESCAPE;
_glfw.null.keycodes[GLFW_NULL_SC_ENTER] = GLFW_KEY_ENTER;
_glfw.null.keycodes[GLFW_NULL_SC_TAB] = GLFW_KEY_TAB;
_glfw.null.keycodes[GLFW_NULL_SC_BACKSPACE] = GLFW_KEY_BACKSPACE;
_glfw.null.keycodes[GLFW_NULL_SC_INSERT] = GLFW_KEY_INSERT;
_glfw.null.keycodes[GLFW_NULL_SC_DELETE] = GLFW_KEY_DELETE;
_glfw.null.keycodes[GLFW_NULL_SC_RIGHT] = GLFW_KEY_RIGHT;
_glfw.null.keycodes[GLFW_NULL_SC_LEFT] = GLFW_KEY_LEFT;
_glfw.null.keycodes[GLFW_NULL_SC_DOWN] = GLFW_KEY_DOWN;
_glfw.null.keycodes[GLFW_NULL_SC_UP] = GLFW_KEY_UP;
_glfw.null.keycodes[GLFW_NULL_SC_PAGE_UP] = GLFW_KEY_PAGE_UP;
_glfw.null.keycodes[GLFW_NULL_SC_PAGE_DOWN] = GLFW_KEY_PAGE_DOWN;
_glfw.null.keycodes[GLFW_NULL_SC_HOME] = GLFW_KEY_HOME;
_glfw.null.keycodes[GLFW_NULL_SC_END] = GLFW_KEY_END;
_glfw.null.keycodes[GLFW_NULL_SC_CAPS_LOCK] = GLFW_KEY_CAPS_LOCK;
_glfw.null.keycodes[GLFW_NULL_SC_SCROLL_LOCK] = GLFW_KEY_SCROLL_LOCK;
_glfw.null.keycodes[GLFW_NULL_SC_NUM_LOCK] = GLFW_KEY_NUM_LOCK;
_glfw.null.keycodes[GLFW_NULL_SC_PRINT_SCREEN] = GLFW_KEY_PRINT_SCREEN;
_glfw.null.keycodes[GLFW_NULL_SC_PAUSE] = GLFW_KEY_PAUSE;
_glfw.null.keycodes[GLFW_NULL_SC_F1] = GLFW_KEY_F1;
_glfw.null.keycodes[GLFW_NULL_SC_F2] = GLFW_KEY_F2;
_glfw.null.keycodes[GLFW_NULL_SC_F3] = GLFW_KEY_F3;
_glfw.null.keycodes[GLFW_NULL_SC_F4] = GLFW_KEY_F4;
_glfw.null.keycodes[GLFW_NULL_SC_F5] = GLFW_KEY_F5;
_glfw.null.keycodes[GLFW_NULL_SC_F6] = GLFW_KEY_F6;
_glfw.null.keycodes[GLFW_NULL_SC_F7] = GLFW_KEY_F7;
_glfw.null.keycodes[GLFW_NULL_SC_F8] = GLFW_KEY_F8;
_glfw.null.keycodes[GLFW_NULL_SC_F9] = GLFW_KEY_F9;
_glfw.null.keycodes[GLFW_NULL_SC_F10] = GLFW_KEY_F10;
_glfw.null.keycodes[GLFW_NULL_SC_F11] = GLFW_KEY_F11;
_glfw.null.keycodes[GLFW_NULL_SC_F12] = GLFW_KEY_F12;
_glfw.null.keycodes[GLFW_NULL_SC_F13] = GLFW_KEY_F13;
_glfw.null.keycodes[GLFW_NULL_SC_F14] = GLFW_KEY_F14;
_glfw.null.keycodes[GLFW_NULL_SC_F15] = GLFW_KEY_F15;
_glfw.null.keycodes[GLFW_NULL_SC_F16] = GLFW_KEY_F16;
_glfw.null.keycodes[GLFW_NULL_SC_F17] = GLFW_KEY_F17;
_glfw.null.keycodes[GLFW_NULL_SC_F18] = GLFW_KEY_F18;
_glfw.null.keycodes[GLFW_NULL_SC_F19] = GLFW_KEY_F19;
_glfw.null.keycodes[GLFW_NULL_SC_F20] = GLFW_KEY_F20;
_glfw.null.keycodes[GLFW_NULL_SC_F21] = GLFW_KEY_F21;
_glfw.null.keycodes[GLFW_NULL_SC_F22] = GLFW_KEY_F22;
_glfw.null.keycodes[GLFW_NULL_SC_F23] = GLFW_KEY_F23;
_glfw.null.keycodes[GLFW_NULL_SC_F24] = GLFW_KEY_F24;
_glfw.null.keycodes[GLFW_NULL_SC_F25] = GLFW_KEY_F25;
_glfw.null.keycodes[GLFW_NULL_SC_KP_0] = GLFW_KEY_KP_0;
_glfw.null.keycodes[GLFW_NULL_SC_KP_1] = GLFW_KEY_KP_1;
_glfw.null.keycodes[GLFW_NULL_SC_KP_2] = GLFW_KEY_KP_2;
_glfw.null.keycodes[GLFW_NULL_SC_KP_3] = GLFW_KEY_KP_3;
_glfw.null.keycodes[GLFW_NULL_SC_KP_4] = GLFW_KEY_KP_4;
_glfw.null.keycodes[GLFW_NULL_SC_KP_5] = GLFW_KEY_KP_5;
_glfw.null.keycodes[GLFW_NULL_SC_KP_6] = GLFW_KEY_KP_6;
_glfw.null.keycodes[GLFW_NULL_SC_KP_7] = GLFW_KEY_KP_7;
_glfw.null.keycodes[GLFW_NULL_SC_KP_8] = GLFW_KEY_KP_8;
_glfw.null.keycodes[GLFW_NULL_SC_KP_9] = GLFW_KEY_KP_9;
_glfw.null.keycodes[GLFW_NULL_SC_KP_DECIMAL] = GLFW_KEY_KP_DECIMAL;
_glfw.null.keycodes[GLFW_NULL_SC_KP_DIVIDE] = GLFW_KEY_KP_DIVIDE;
_glfw.null.keycodes[GLFW_NULL_SC_KP_MULTIPLY] = GLFW_KEY_KP_MULTIPLY;
_glfw.null.keycodes[GLFW_NULL_SC_KP_SUBTRACT] = GLFW_KEY_KP_SUBTRACT;
_glfw.null.keycodes[GLFW_NULL_SC_KP_ADD] = GLFW_KEY_KP_ADD;
_glfw.null.keycodes[GLFW_NULL_SC_KP_ENTER] = GLFW_KEY_KP_ENTER;
_glfw.null.keycodes[GLFW_NULL_SC_KP_EQUAL] = GLFW_KEY_KP_EQUAL;
_glfw.null.keycodes[GLFW_NULL_SC_LEFT_SHIFT] = GLFW_KEY_LEFT_SHIFT;
_glfw.null.keycodes[GLFW_NULL_SC_LEFT_CONTROL] = GLFW_KEY_LEFT_CONTROL;
_glfw.null.keycodes[GLFW_NULL_SC_LEFT_ALT] = GLFW_KEY_LEFT_ALT;
_glfw.null.keycodes[GLFW_NULL_SC_LEFT_SUPER] = GLFW_KEY_LEFT_SUPER;
_glfw.null.keycodes[GLFW_NULL_SC_RIGHT_SHIFT] = GLFW_KEY_RIGHT_SHIFT;
_glfw.null.keycodes[GLFW_NULL_SC_RIGHT_CONTROL] = GLFW_KEY_RIGHT_CONTROL;
_glfw.null.keycodes[GLFW_NULL_SC_RIGHT_ALT] = GLFW_KEY_RIGHT_ALT;
_glfw.null.keycodes[GLFW_NULL_SC_RIGHT_SUPER] = GLFW_KEY_RIGHT_SUPER;
_glfw.null.keycodes[GLFW_NULL_SC_MENU] = GLFW_KEY_MENU;
for (scancode = GLFW_NULL_SC_FIRST; scancode < GLFW_NULL_SC_LAST; scancode++)
{
if (_glfw.null.keycodes[scancode] > 0)
_glfw.null.scancodes[_glfw.null.keycodes[scancode]] = scancode;
}
_glfwPollMonitorsNull();
return GLFW_TRUE;
}
void _glfwTerminateNull(void)
{
free(_glfw.null.clipboardString);
_glfwTerminateOSMesa();
_glfwTerminateEGL();
}
@@ -0,0 +1,58 @@
//========================================================================
// GLFW 3.4 - www.glfw.org
//------------------------------------------------------------------------
// Copyright (c) 2016-2017 Camilla Löwy <elmindreda@glfw.org>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would
// be appreciated but is not required.
//
// 2. Altered source versions must be plainly marked as such, and must not
// be misrepresented as being the original software.
//
// 3. This notice may not be removed or altered from any source
// distribution.
//
//========================================================================
// It is fine to use C99 in this file because it will not be built with VS
//========================================================================
#include "glfw_internal.h"
//////////////////////////////////////////////////////////////////////////
////// GLFW platform API //////
//////////////////////////////////////////////////////////////////////////
GLFWbool _glfwInitJoysticksNull(void)
{
return GLFW_TRUE;
}
void _glfwTerminateJoysticksNull(void)
{
}
GLFWbool _glfwPollJoystickNull(_GLFWjoystick* js, int mode)
{
return GLFW_FALSE;
}
const char* _glfwGetMappingNameNull(void)
{
return "";
}
void _glfwUpdateGamepadGUIDNull(char* guid)
{
}
@@ -0,0 +1,161 @@
//========================================================================
// GLFW 3.4 - www.glfw.org
//------------------------------------------------------------------------
// Copyright (c) 2016 Google Inc.
// Copyright (c) 2016-2019 Camilla Löwy <elmindreda@glfw.org>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would
// be appreciated but is not required.
//
// 2. Altered source versions must be plainly marked as such, and must not
// be misrepresented as being the original software.
//
// 3. This notice may not be removed or altered from any source
// distribution.
//
//========================================================================
// It is fine to use C99 in this file because it will not be built with VS
//========================================================================
#include "glfw_internal.h"
#include <stdlib.h>
#include <string.h>
#include <math.h>
// The the sole (fake) video mode of our (sole) fake monitor
//
static GLFWvidmode getVideoMode(void)
{
GLFWvidmode mode;
mode.width = 1920;
mode.height = 1080;
mode.redBits = 8;
mode.greenBits = 8;
mode.blueBits = 8;
mode.refreshRate = 60;
return mode;
}
//////////////////////////////////////////////////////////////////////////
////// GLFW internal API //////
//////////////////////////////////////////////////////////////////////////
void _glfwPollMonitorsNull(void)
{
const float dpi = 141.f;
const GLFWvidmode mode = getVideoMode();
_GLFWmonitor* monitor = _glfwAllocMonitor("Null SuperNoop 0",
(int) (mode.width * 25.4f / dpi),
(int) (mode.height * 25.4f / dpi));
_glfwInputMonitor(monitor, GLFW_CONNECTED, _GLFW_INSERT_FIRST);
}
//////////////////////////////////////////////////////////////////////////
////// GLFW platform API //////
//////////////////////////////////////////////////////////////////////////
void _glfwFreeMonitorNull(_GLFWmonitor* monitor)
{
_glfwFreeGammaArrays(&monitor->null.ramp);
}
void _glfwGetMonitorPosNull(_GLFWmonitor* monitor, int* xpos, int* ypos)
{
if (xpos)
*xpos = 0;
if (ypos)
*ypos = 0;
}
void _glfwGetMonitorContentScaleNull(_GLFWmonitor* monitor,
float* xscale, float* yscale)
{
if (xscale)
*xscale = 1.f;
if (yscale)
*yscale = 1.f;
}
void _glfwGetMonitorWorkareaNull(_GLFWmonitor* monitor,
int* xpos, int* ypos,
int* width, int* height)
{
const GLFWvidmode mode = getVideoMode();
if (xpos)
*xpos = 0;
if (ypos)
*ypos = 10;
if (width)
*width = mode.width;
if (height)
*height = mode.height - 10;
}
GLFWvidmode* _glfwGetVideoModesNull(_GLFWmonitor* monitor, int* found)
{
GLFWvidmode* mode = _glfw_calloc(1, sizeof(GLFWvidmode));
*mode = getVideoMode();
*found = 1;
return mode;
}
void _glfwGetVideoModeNull(_GLFWmonitor* monitor, GLFWvidmode* mode)
{
*mode = getVideoMode();
}
GLFWbool _glfwGetGammaRampNull(_GLFWmonitor* monitor, GLFWgammaramp* ramp)
{
if (!monitor->null.ramp.size)
{
unsigned int i;
_glfwAllocGammaArrays(&monitor->null.ramp, 256);
for (i = 0; i < monitor->null.ramp.size; i++)
{
const float gamma = 2.2f;
float value;
value = i / (float) (monitor->null.ramp.size - 1);
value = powf(value, 1.f / gamma) * 65535.f + 0.5f;
value = _glfw_fminf(value, 65535.f);
monitor->null.ramp.red[i] = (unsigned short) value;
monitor->null.ramp.green[i] = (unsigned short) value;
monitor->null.ramp.blue[i] = (unsigned short) value;
}
}
_glfwAllocGammaArrays(ramp, monitor->null.ramp.size);
memcpy(ramp->red, monitor->null.ramp.red, sizeof(short) * ramp->size);
memcpy(ramp->green, monitor->null.ramp.green, sizeof(short) * ramp->size);
memcpy(ramp->blue, monitor->null.ramp.blue, sizeof(short) * ramp->size);
return GLFW_TRUE;
}
void _glfwSetGammaRampNull(_GLFWmonitor* monitor, const GLFWgammaramp* ramp)
{
if (monitor->null.ramp.size != ramp->size)
{
_glfwInputError(GLFW_PLATFORM_ERROR,
"Null: Gamma ramp size must match current ramp size");
return;
}
memcpy(monitor->null.ramp.red, ramp->red, sizeof(short) * ramp->size);
memcpy(monitor->null.ramp.green, ramp->green, sizeof(short) * ramp->size);
memcpy(monitor->null.ramp.blue, ramp->blue, sizeof(short) * ramp->size);
}
@@ -0,0 +1,720 @@
//========================================================================
// GLFW 3.4 - www.glfw.org
//------------------------------------------------------------------------
// Copyright (c) 2016 Google Inc.
// Copyright (c) 2016-2019 Camilla Löwy <elmindreda@glfw.org>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would
// be appreciated but is not required.
//
// 2. Altered source versions must be plainly marked as such, and must not
// be misrepresented as being the original software.
//
// 3. This notice may not be removed or altered from any source
// distribution.
//
//========================================================================
// It is fine to use C99 in this file because it will not be built with VS
//========================================================================
#include "glfw_internal.h"
#include <stdlib.h>
static void applySizeLimits(_GLFWwindow* window, int* width, int* height)
{
if (window->numer != GLFW_DONT_CARE && window->denom != GLFW_DONT_CARE)
{
const float ratio = (float) window->numer / (float) window->denom;
*height = (int) (*width / ratio);
}
if (window->minwidth != GLFW_DONT_CARE)
*width = _glfw_max(*width, window->minwidth);
else if (window->maxwidth != GLFW_DONT_CARE)
*width = _glfw_min(*width, window->maxwidth);
if (window->minheight != GLFW_DONT_CARE)
*height = _glfw_min(*height, window->minheight);
else if (window->maxheight != GLFW_DONT_CARE)
*height = _glfw_max(*height, window->maxheight);
}
static void fitToMonitor(_GLFWwindow* window)
{
GLFWvidmode mode;
_glfwGetVideoModeNull(window->monitor, &mode);
_glfwGetMonitorPosNull(window->monitor,
&window->null.xpos,
&window->null.ypos);
window->null.width = mode.width;
window->null.height = mode.height;
}
static void acquireMonitor(_GLFWwindow* window)
{
_glfwInputMonitorWindow(window->monitor, window);
}
static void releaseMonitor(_GLFWwindow* window)
{
if (window->monitor->window != window)
return;
_glfwInputMonitorWindow(window->monitor, NULL);
}
static int createNativeWindow(_GLFWwindow* window,
const _GLFWwndconfig* wndconfig,
const _GLFWfbconfig* fbconfig)
{
if (window->monitor)
fitToMonitor(window);
else
{
if (wndconfig->xpos == GLFW_ANY_POSITION && wndconfig->ypos == GLFW_ANY_POSITION)
{
window->null.xpos = 17;
window->null.ypos = 17;
}
else
{
window->null.xpos = wndconfig->xpos;
window->null.ypos = wndconfig->ypos;
}
window->null.width = wndconfig->width;
window->null.height = wndconfig->height;
}
window->null.visible = wndconfig->visible;
window->null.decorated = wndconfig->decorated;
window->null.maximized = wndconfig->maximized;
window->null.floating = wndconfig->floating;
window->null.transparent = fbconfig->transparent;
window->null.opacity = 1.f;
return GLFW_TRUE;
}
//////////////////////////////////////////////////////////////////////////
////// GLFW platform API //////
//////////////////////////////////////////////////////////////////////////
GLFWbool _glfwCreateWindowNull(_GLFWwindow* window,
const _GLFWwndconfig* wndconfig,
const _GLFWctxconfig* ctxconfig,
const _GLFWfbconfig* fbconfig)
{
if (!createNativeWindow(window, wndconfig, fbconfig))
return GLFW_FALSE;
if (ctxconfig->client != GLFW_NO_API)
{
if (ctxconfig->source == GLFW_NATIVE_CONTEXT_API ||
ctxconfig->source == GLFW_OSMESA_CONTEXT_API)
{
if (!_glfwInitOSMesa())
return GLFW_FALSE;
if (!_glfwCreateContextOSMesa(window, ctxconfig, fbconfig))
return GLFW_FALSE;
}
else if (ctxconfig->source == GLFW_EGL_CONTEXT_API)
{
if (!_glfwInitEGL())
return GLFW_FALSE;
if (!_glfwCreateContextEGL(window, ctxconfig, fbconfig))
return GLFW_FALSE;
}
if (!_glfwRefreshContextAttribs(window, ctxconfig))
return GLFW_FALSE;
}
if (wndconfig->mousePassthrough)
_glfwSetWindowMousePassthroughNull(window, GLFW_TRUE);
if (window->monitor)
{
_glfwShowWindowNull(window);
_glfwFocusWindowNull(window);
acquireMonitor(window);
if (wndconfig->centerCursor)
_glfwCenterCursorInContentArea(window);
}
else
{
if (wndconfig->visible)
{
_glfwShowWindowNull(window);
if (wndconfig->focused)
_glfwFocusWindowNull(window);
}
}
return GLFW_TRUE;
}
void _glfwDestroyWindowNull(_GLFWwindow* window)
{
if (window->monitor)
releaseMonitor(window);
if (_glfw.null.focusedWindow == window)
_glfw.null.focusedWindow = NULL;
if (window->context.destroy)
window->context.destroy(window);
}
void _glfwSetWindowTitleNull(_GLFWwindow* window, const char* title)
{
}
void _glfwSetWindowIconNull(_GLFWwindow* window, int count, const GLFWimage* images)
{
}
void _glfwSetWindowMonitorNull(_GLFWwindow* window,
_GLFWmonitor* monitor,
int xpos, int ypos,
int width, int height,
int refreshRate)
{
if (window->monitor == monitor)
{
if (!monitor)
{
_glfwSetWindowPosNull(window, xpos, ypos);
_glfwSetWindowSizeNull(window, width, height);
}
return;
}
if (window->monitor)
releaseMonitor(window);
_glfwInputWindowMonitor(window, monitor);
if (window->monitor)
{
window->null.visible = GLFW_TRUE;
acquireMonitor(window);
fitToMonitor(window);
}
else
{
_glfwSetWindowPosNull(window, xpos, ypos);
_glfwSetWindowSizeNull(window, width, height);
}
}
void _glfwGetWindowPosNull(_GLFWwindow* window, int* xpos, int* ypos)
{
if (xpos)
*xpos = window->null.xpos;
if (ypos)
*ypos = window->null.ypos;
}
void _glfwSetWindowPosNull(_GLFWwindow* window, int xpos, int ypos)
{
if (window->monitor)
return;
if (window->null.xpos != xpos || window->null.ypos != ypos)
{
window->null.xpos = xpos;
window->null.ypos = ypos;
_glfwInputWindowPos(window, xpos, ypos);
}
}
void _glfwGetWindowSizeNull(_GLFWwindow* window, int* width, int* height)
{
if (width)
*width = window->null.width;
if (height)
*height = window->null.height;
}
void _glfwSetWindowSizeNull(_GLFWwindow* window, int width, int height)
{
if (window->monitor)
return;
if (window->null.width != width || window->null.height != height)
{
window->null.width = width;
window->null.height = height;
_glfwInputWindowSize(window, width, height);
_glfwInputFramebufferSize(window, width, height);
}
}
void _glfwSetWindowSizeLimitsNull(_GLFWwindow* window,
int minwidth, int minheight,
int maxwidth, int maxheight)
{
int width = window->null.width;
int height = window->null.height;
applySizeLimits(window, &width, &height);
_glfwSetWindowSizeNull(window, width, height);
}
void _glfwSetWindowAspectRatioNull(_GLFWwindow* window, int n, int d)
{
int width = window->null.width;
int height = window->null.height;
applySizeLimits(window, &width, &height);
_glfwSetWindowSizeNull(window, width, height);
}
void _glfwGetFramebufferSizeNull(_GLFWwindow* window, int* width, int* height)
{
if (width)
*width = window->null.width;
if (height)
*height = window->null.height;
}
void _glfwGetWindowFrameSizeNull(_GLFWwindow* window,
int* left, int* top,
int* right, int* bottom)
{
if (window->null.decorated && !window->monitor)
{
if (left)
*left = 1;
if (top)
*top = 10;
if (right)
*right = 1;
if (bottom)
*bottom = 1;
}
else
{
if (left)
*left = 0;
if (top)
*top = 0;
if (right)
*right = 0;
if (bottom)
*bottom = 0;
}
}
void _glfwGetWindowContentScaleNull(_GLFWwindow* window, float* xscale, float* yscale)
{
if (xscale)
*xscale = 1.f;
if (yscale)
*yscale = 1.f;
}
void _glfwIconifyWindowNull(_GLFWwindow* window)
{
if (_glfw.null.focusedWindow == window)
{
_glfw.null.focusedWindow = NULL;
_glfwInputWindowFocus(window, GLFW_FALSE);
}
if (!window->null.iconified)
{
window->null.iconified = GLFW_TRUE;
_glfwInputWindowIconify(window, GLFW_TRUE);
if (window->monitor)
releaseMonitor(window);
}
}
void _glfwRestoreWindowNull(_GLFWwindow* window)
{
if (window->null.iconified)
{
window->null.iconified = GLFW_FALSE;
_glfwInputWindowIconify(window, GLFW_FALSE);
if (window->monitor)
acquireMonitor(window);
}
else if (window->null.maximized)
{
window->null.maximized = GLFW_FALSE;
_glfwInputWindowMaximize(window, GLFW_FALSE);
}
}
void _glfwMaximizeWindowNull(_GLFWwindow* window)
{
if (!window->null.maximized)
{
window->null.maximized = GLFW_TRUE;
_glfwInputWindowMaximize(window, GLFW_TRUE);
}
}
GLFWbool _glfwWindowMaximizedNull(_GLFWwindow* window)
{
return window->null.maximized;
}
GLFWbool _glfwWindowHoveredNull(_GLFWwindow* window)
{
return _glfw.null.xcursor >= window->null.xpos &&
_glfw.null.ycursor >= window->null.ypos &&
_glfw.null.xcursor <= window->null.xpos + window->null.width - 1 &&
_glfw.null.ycursor <= window->null.ypos + window->null.height - 1;
}
GLFWbool _glfwFramebufferTransparentNull(_GLFWwindow* window)
{
return window->null.transparent;
}
void _glfwSetWindowResizableNull(_GLFWwindow* window, GLFWbool enabled)
{
window->null.resizable = enabled;
}
void _glfwSetWindowDecoratedNull(_GLFWwindow* window, GLFWbool enabled)
{
window->null.decorated = enabled;
}
void _glfwSetWindowFloatingNull(_GLFWwindow* window, GLFWbool enabled)
{
window->null.floating = enabled;
}
void _glfwSetWindowMousePassthroughNull(_GLFWwindow* window, GLFWbool enabled)
{
}
float _glfwGetWindowOpacityNull(_GLFWwindow* window)
{
return window->null.opacity;
}
void _glfwSetWindowOpacityNull(_GLFWwindow* window, float opacity)
{
window->null.opacity = opacity;
}
void _glfwSetRawMouseMotionNull(_GLFWwindow *window, GLFWbool enabled)
{
}
GLFWbool _glfwRawMouseMotionSupportedNull(void)
{
return GLFW_TRUE;
}
void _glfwShowWindowNull(_GLFWwindow* window)
{
window->null.visible = GLFW_TRUE;
}
void _glfwRequestWindowAttentionNull(_GLFWwindow* window)
{
}
void _glfwHideWindowNull(_GLFWwindow* window)
{
if (_glfw.null.focusedWindow == window)
{
_glfw.null.focusedWindow = NULL;
_glfwInputWindowFocus(window, GLFW_FALSE);
}
window->null.visible = GLFW_FALSE;
}
void _glfwFocusWindowNull(_GLFWwindow* window)
{
_GLFWwindow* previous;
if (_glfw.null.focusedWindow == window)
return;
if (!window->null.visible)
return;
previous = _glfw.null.focusedWindow;
_glfw.null.focusedWindow = window;
if (previous)
{
_glfwInputWindowFocus(previous, GLFW_FALSE);
if (previous->monitor && previous->autoIconify)
_glfwIconifyWindowNull(previous);
}
_glfwInputWindowFocus(window, GLFW_TRUE);
}
GLFWbool _glfwWindowFocusedNull(_GLFWwindow* window)
{
return _glfw.null.focusedWindow == window;
}
GLFWbool _glfwWindowIconifiedNull(_GLFWwindow* window)
{
return window->null.iconified;
}
GLFWbool _glfwWindowVisibleNull(_GLFWwindow* window)
{
return window->null.visible;
}
void _glfwPollEventsNull(void)
{
}
void _glfwWaitEventsNull(void)
{
}
void _glfwWaitEventsTimeoutNull(double timeout)
{
}
void _glfwPostEmptyEventNull(void)
{
}
void _glfwGetCursorPosNull(_GLFWwindow* window, double* xpos, double* ypos)
{
if (xpos)
*xpos = _glfw.null.xcursor - window->null.xpos;
if (ypos)
*ypos = _glfw.null.ycursor - window->null.ypos;
}
void _glfwSetCursorPosNull(_GLFWwindow* window, double x, double y)
{
_glfw.null.xcursor = window->null.xpos + (int) x;
_glfw.null.ycursor = window->null.ypos + (int) y;
}
void _glfwSetCursorModeNull(_GLFWwindow* window, int mode)
{
}
GLFWbool _glfwCreateCursorNull(_GLFWcursor* cursor,
const GLFWimage* image,
int xhot, int yhot)
{
return GLFW_TRUE;
}
GLFWbool _glfwCreateStandardCursorNull(_GLFWcursor* cursor, int shape)
{
return GLFW_TRUE;
}
void _glfwDestroyCursorNull(_GLFWcursor* cursor)
{
}
void _glfwSetCursorNull(_GLFWwindow* window, _GLFWcursor* cursor)
{
}
void _glfwSetClipboardStringNull(const char* string)
{
char* copy = _glfw_strdup(string);
_glfw_free(_glfw.null.clipboardString);
_glfw.null.clipboardString = copy;
}
const char* _glfwGetClipboardStringNull(void)
{
return _glfw.null.clipboardString;
}
EGLenum _glfwGetEGLPlatformNull(EGLint** attribs)
{
return 0;
}
EGLNativeDisplayType _glfwGetEGLNativeDisplayNull(void)
{
return 0;
}
EGLNativeWindowType _glfwGetEGLNativeWindowNull(_GLFWwindow* window)
{
return 0;
}
const char* _glfwGetScancodeNameNull(int scancode)
{
if (scancode < GLFW_NULL_SC_FIRST || scancode > GLFW_NULL_SC_LAST)
{
_glfwInputError(GLFW_INVALID_VALUE, "Invalid scancode %i", scancode);
return NULL;
}
switch (scancode)
{
case GLFW_NULL_SC_APOSTROPHE:
return "'";
case GLFW_NULL_SC_COMMA:
return ",";
case GLFW_NULL_SC_MINUS:
case GLFW_NULL_SC_KP_SUBTRACT:
return "-";
case GLFW_NULL_SC_PERIOD:
case GLFW_NULL_SC_KP_DECIMAL:
return ".";
case GLFW_NULL_SC_SLASH:
case GLFW_NULL_SC_KP_DIVIDE:
return "/";
case GLFW_NULL_SC_SEMICOLON:
return ";";
case GLFW_NULL_SC_EQUAL:
case GLFW_NULL_SC_KP_EQUAL:
return "=";
case GLFW_NULL_SC_LEFT_BRACKET:
return "[";
case GLFW_NULL_SC_RIGHT_BRACKET:
return "]";
case GLFW_NULL_SC_KP_MULTIPLY:
return "*";
case GLFW_NULL_SC_KP_ADD:
return "+";
case GLFW_NULL_SC_BACKSLASH:
case GLFW_NULL_SC_WORLD_1:
case GLFW_NULL_SC_WORLD_2:
return "\\";
case GLFW_NULL_SC_0:
case GLFW_NULL_SC_KP_0:
return "0";
case GLFW_NULL_SC_1:
case GLFW_NULL_SC_KP_1:
return "1";
case GLFW_NULL_SC_2:
case GLFW_NULL_SC_KP_2:
return "2";
case GLFW_NULL_SC_3:
case GLFW_NULL_SC_KP_3:
return "3";
case GLFW_NULL_SC_4:
case GLFW_NULL_SC_KP_4:
return "4";
case GLFW_NULL_SC_5:
case GLFW_NULL_SC_KP_5:
return "5";
case GLFW_NULL_SC_6:
case GLFW_NULL_SC_KP_6:
return "6";
case GLFW_NULL_SC_7:
case GLFW_NULL_SC_KP_7:
return "7";
case GLFW_NULL_SC_8:
case GLFW_NULL_SC_KP_8:
return "8";
case GLFW_NULL_SC_9:
case GLFW_NULL_SC_KP_9:
return "9";
case GLFW_NULL_SC_A:
return "a";
case GLFW_NULL_SC_B:
return "b";
case GLFW_NULL_SC_C:
return "c";
case GLFW_NULL_SC_D:
return "d";
case GLFW_NULL_SC_E:
return "e";
case GLFW_NULL_SC_F:
return "f";
case GLFW_NULL_SC_G:
return "g";
case GLFW_NULL_SC_H:
return "h";
case GLFW_NULL_SC_I:
return "i";
case GLFW_NULL_SC_J:
return "j";
case GLFW_NULL_SC_K:
return "k";
case GLFW_NULL_SC_L:
return "l";
case GLFW_NULL_SC_M:
return "m";
case GLFW_NULL_SC_N:
return "n";
case GLFW_NULL_SC_O:
return "o";
case GLFW_NULL_SC_P:
return "p";
case GLFW_NULL_SC_Q:
return "q";
case GLFW_NULL_SC_R:
return "r";
case GLFW_NULL_SC_S:
return "s";
case GLFW_NULL_SC_T:
return "t";
case GLFW_NULL_SC_U:
return "u";
case GLFW_NULL_SC_V:
return "v";
case GLFW_NULL_SC_W:
return "w";
case GLFW_NULL_SC_X:
return "x";
case GLFW_NULL_SC_Y:
return "y";
case GLFW_NULL_SC_Z:
return "z";
}
return NULL;
}
int _glfwGetKeyScancodeNull(int key)
{
return _glfw.null.scancodes[key];
}
void _glfwGetRequiredInstanceExtensionsNull(char** extensions)
{
}
GLFWbool _glfwGetPhysicalDevicePresentationSupportNull(VkInstance instance,
VkPhysicalDevice device,
uint32_t queuefamily)
{
return GLFW_FALSE;
}
VkResult _glfwCreateWindowSurfaceNull(VkInstance instance,
_GLFWwindow* window,
const VkAllocationCallbacks* allocator,
VkSurfaceKHR* surface)
{
// This seems like the most appropriate error to return here
return VK_ERROR_EXTENSION_NOT_PRESENT;
}
@@ -0,0 +1,386 @@
//========================================================================
// GLFW 3.4 OSMesa - www.glfw.org
//------------------------------------------------------------------------
// Copyright (c) 2016 Google Inc.
// Copyright (c) 2016-2017 Camilla Löwy <elmindreda@glfw.org>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would
// be appreciated but is not required.
//
// 2. Altered source versions must be plainly marked as such, and must not
// be misrepresented as being the original software.
//
// 3. This notice may not be removed or altered from any source
// distribution.
//
//========================================================================
// Please use C89 style variable declarations in this file because VS 2010
//========================================================================
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include "glfw_internal.h"
static void makeContextCurrentOSMesa(_GLFWwindow* window)
{
if (window)
{
int width, height;
_glfw.platform.getFramebufferSize(window, &width, &height);
// Check to see if we need to allocate a new buffer
if ((window->context.osmesa.buffer == NULL) ||
(width != window->context.osmesa.width) ||
(height != window->context.osmesa.height))
{
_glfw_free(window->context.osmesa.buffer);
// Allocate the new buffer (width * height * 8-bit RGBA)
window->context.osmesa.buffer = _glfw_calloc(4, (size_t) width * height);
window->context.osmesa.width = width;
window->context.osmesa.height = height;
}
if (!OSMesaMakeCurrent(window->context.osmesa.handle,
window->context.osmesa.buffer,
GL_UNSIGNED_BYTE,
width, height))
{
_glfwInputError(GLFW_PLATFORM_ERROR,
"OSMesa: Failed to make context current");
return;
}
}
_glfwPlatformSetTls(&_glfw.contextSlot, window);
}
static GLFWglproc getProcAddressOSMesa(const char* procname)
{
return (GLFWglproc) OSMesaGetProcAddress(procname);
}
static void destroyContextOSMesa(_GLFWwindow* window)
{
if (window->context.osmesa.handle)
{
OSMesaDestroyContext(window->context.osmesa.handle);
window->context.osmesa.handle = NULL;
}
if (window->context.osmesa.buffer)
{
_glfw_free(window->context.osmesa.buffer);
window->context.osmesa.width = 0;
window->context.osmesa.height = 0;
}
}
static void swapBuffersOSMesa(_GLFWwindow* window)
{
// No double buffering on OSMesa
}
static void swapIntervalOSMesa(int interval)
{
// No swap interval on OSMesa
}
static int extensionSupportedOSMesa(const char* extension)
{
// OSMesa does not have extensions
return GLFW_FALSE;
}
//////////////////////////////////////////////////////////////////////////
////// GLFW internal API //////
//////////////////////////////////////////////////////////////////////////
GLFWbool _glfwInitOSMesa(void)
{
int i;
const char* sonames[] =
{
#if defined(_GLFW_OSMESA_LIBRARY)
_GLFW_OSMESA_LIBRARY,
#elif defined(_WIN32)
"libOSMesa.dll",
"OSMesa.dll",
#elif defined(__APPLE__)
"libOSMesa.8.dylib",
#elif defined(__CYGWIN__)
"libOSMesa-8.so",
#elif defined(__OpenBSD__) || defined(__NetBSD__)
"libOSMesa.so",
#else
"libOSMesa.so.8",
"libOSMesa.so.6",
#endif
NULL
};
if (_glfw.osmesa.handle)
return GLFW_TRUE;
for (i = 0; sonames[i]; i++)
{
_glfw.osmesa.handle = _glfwPlatformLoadModule(sonames[i]);
if (_glfw.osmesa.handle)
break;
}
if (!_glfw.osmesa.handle)
{
_glfwInputError(GLFW_API_UNAVAILABLE, "OSMesa: Library not found");
return GLFW_FALSE;
}
_glfw.osmesa.CreateContextExt = (PFN_OSMesaCreateContextExt)
_glfwPlatformGetModuleSymbol(_glfw.osmesa.handle, "OSMesaCreateContextExt");
_glfw.osmesa.CreateContextAttribs = (PFN_OSMesaCreateContextAttribs)
_glfwPlatformGetModuleSymbol(_glfw.osmesa.handle, "OSMesaCreateContextAttribs");
_glfw.osmesa.DestroyContext = (PFN_OSMesaDestroyContext)
_glfwPlatformGetModuleSymbol(_glfw.osmesa.handle, "OSMesaDestroyContext");
_glfw.osmesa.MakeCurrent = (PFN_OSMesaMakeCurrent)
_glfwPlatformGetModuleSymbol(_glfw.osmesa.handle, "OSMesaMakeCurrent");
_glfw.osmesa.GetColorBuffer = (PFN_OSMesaGetColorBuffer)
_glfwPlatformGetModuleSymbol(_glfw.osmesa.handle, "OSMesaGetColorBuffer");
_glfw.osmesa.GetDepthBuffer = (PFN_OSMesaGetDepthBuffer)
_glfwPlatformGetModuleSymbol(_glfw.osmesa.handle, "OSMesaGetDepthBuffer");
_glfw.osmesa.GetProcAddress = (PFN_OSMesaGetProcAddress)
_glfwPlatformGetModuleSymbol(_glfw.osmesa.handle, "OSMesaGetProcAddress");
if (!_glfw.osmesa.CreateContextExt ||
!_glfw.osmesa.DestroyContext ||
!_glfw.osmesa.MakeCurrent ||
!_glfw.osmesa.GetColorBuffer ||
!_glfw.osmesa.GetDepthBuffer ||
!_glfw.osmesa.GetProcAddress)
{
_glfwInputError(GLFW_PLATFORM_ERROR,
"OSMesa: Failed to load required entry points");
_glfwTerminateOSMesa();
return GLFW_FALSE;
}
return GLFW_TRUE;
}
void _glfwTerminateOSMesa(void)
{
if (_glfw.osmesa.handle)
{
_glfwPlatformFreeModule(_glfw.osmesa.handle);
_glfw.osmesa.handle = NULL;
}
}
#define SET_ATTRIB(a, v) \
{ \
assert(((size_t) index + 1) < sizeof(attribs) / sizeof(attribs[0])); \
attribs[index++] = a; \
attribs[index++] = v; \
}
GLFWbool _glfwCreateContextOSMesa(_GLFWwindow* window,
const _GLFWctxconfig* ctxconfig,
const _GLFWfbconfig* fbconfig)
{
OSMesaContext share = NULL;
const int accumBits = fbconfig->accumRedBits +
fbconfig->accumGreenBits +
fbconfig->accumBlueBits +
fbconfig->accumAlphaBits;
if (ctxconfig->client == GLFW_OPENGL_ES_API)
{
_glfwInputError(GLFW_API_UNAVAILABLE,
"OSMesa: OpenGL ES is not available on OSMesa");
return GLFW_FALSE;
}
if (ctxconfig->share)
share = ctxconfig->share->context.osmesa.handle;
if (OSMesaCreateContextAttribs)
{
int index = 0, attribs[40];
SET_ATTRIB(OSMESA_FORMAT, OSMESA_RGBA);
SET_ATTRIB(OSMESA_DEPTH_BITS, fbconfig->depthBits);
SET_ATTRIB(OSMESA_STENCIL_BITS, fbconfig->stencilBits);
SET_ATTRIB(OSMESA_ACCUM_BITS, accumBits);
if (ctxconfig->profile == GLFW_OPENGL_CORE_PROFILE)
{
SET_ATTRIB(OSMESA_PROFILE, OSMESA_CORE_PROFILE);
}
else if (ctxconfig->profile == GLFW_OPENGL_COMPAT_PROFILE)
{
SET_ATTRIB(OSMESA_PROFILE, OSMESA_COMPAT_PROFILE);
}
if (ctxconfig->major != 1 || ctxconfig->minor != 0)
{
SET_ATTRIB(OSMESA_CONTEXT_MAJOR_VERSION, ctxconfig->major);
SET_ATTRIB(OSMESA_CONTEXT_MINOR_VERSION, ctxconfig->minor);
}
if (ctxconfig->forward)
{
_glfwInputError(GLFW_VERSION_UNAVAILABLE,
"OSMesa: Forward-compatible contexts not supported");
return GLFW_FALSE;
}
SET_ATTRIB(0, 0);
window->context.osmesa.handle =
OSMesaCreateContextAttribs(attribs, share);
}
else
{
if (ctxconfig->profile)
{
_glfwInputError(GLFW_VERSION_UNAVAILABLE,
"OSMesa: OpenGL profiles unavailable");
return GLFW_FALSE;
}
window->context.osmesa.handle =
OSMesaCreateContextExt(OSMESA_RGBA,
fbconfig->depthBits,
fbconfig->stencilBits,
accumBits,
share);
}
if (window->context.osmesa.handle == NULL)
{
_glfwInputError(GLFW_VERSION_UNAVAILABLE,
"OSMesa: Failed to create context");
return GLFW_FALSE;
}
window->context.makeCurrent = makeContextCurrentOSMesa;
window->context.swapBuffers = swapBuffersOSMesa;
window->context.swapInterval = swapIntervalOSMesa;
window->context.extensionSupported = extensionSupportedOSMesa;
window->context.getProcAddress = getProcAddressOSMesa;
window->context.destroy = destroyContextOSMesa;
return GLFW_TRUE;
}
#undef SET_ATTRIB
//////////////////////////////////////////////////////////////////////////
////// GLFW native API //////
//////////////////////////////////////////////////////////////////////////
SSCAPI int glfwGetOSMesaColorBuffer(GLFWwindow* handle, int* width,
int* height, int* format, void** buffer)
{
void* mesaBuffer;
GLint mesaWidth, mesaHeight, mesaFormat;
_GLFWwindow* window = (_GLFWwindow*) handle;
assert(window != NULL);
_GLFW_REQUIRE_INIT_OR_RETURN(GLFW_FALSE);
if (window->context.source != GLFW_OSMESA_CONTEXT_API)
{
_glfwInputError(GLFW_NO_WINDOW_CONTEXT, NULL);
return GLFW_FALSE;
}
if (!OSMesaGetColorBuffer(window->context.osmesa.handle,
&mesaWidth, &mesaHeight,
&mesaFormat, &mesaBuffer))
{
_glfwInputError(GLFW_PLATFORM_ERROR,
"OSMesa: Failed to retrieve color buffer");
return GLFW_FALSE;
}
if (width)
*width = mesaWidth;
if (height)
*height = mesaHeight;
if (format)
*format = mesaFormat;
if (buffer)
*buffer = mesaBuffer;
return GLFW_TRUE;
}
SSCAPI int glfwGetOSMesaDepthBuffer(GLFWwindow* handle,
int* width, int* height,
int* bytesPerValue,
void** buffer)
{
void* mesaBuffer;
GLint mesaWidth, mesaHeight, mesaBytes;
_GLFWwindow* window = (_GLFWwindow*) handle;
assert(window != NULL);
_GLFW_REQUIRE_INIT_OR_RETURN(GLFW_FALSE);
if (window->context.source != GLFW_OSMESA_CONTEXT_API)
{
_glfwInputError(GLFW_NO_WINDOW_CONTEXT, NULL);
return GLFW_FALSE;
}
if (!OSMesaGetDepthBuffer(window->context.osmesa.handle,
&mesaWidth, &mesaHeight,
&mesaBytes, &mesaBuffer))
{
_glfwInputError(GLFW_PLATFORM_ERROR,
"OSMesa: Failed to retrieve depth buffer");
return GLFW_FALSE;
}
if (width)
*width = mesaWidth;
if (height)
*height = mesaHeight;
if (bytesPerValue)
*bytesPerValue = mesaBytes;
if (buffer)
*buffer = mesaBuffer;
return GLFW_TRUE;
}
SSCAPI OSMesaContext glfwGetOSMesaContext(GLFWwindow* handle)
{
_GLFWwindow* window = (_GLFWwindow*) handle;
_GLFW_REQUIRE_INIT_OR_RETURN(NULL);
if (window->context.source != GLFW_OSMESA_CONTEXT_API)
{
_glfwInputError(GLFW_NO_WINDOW_CONTEXT, NULL);
return NULL;
}
return window->context.osmesa.handle;
}
@@ -0,0 +1,195 @@
//========================================================================
// GLFW 3.4 - www.glfw.org
//------------------------------------------------------------------------
// Copyright (c) 2002-2006 Marcus Geelnard
// Copyright (c) 2006-2018 Camilla Löwy <elmindreda@glfw.org>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would
// be appreciated but is not required.
//
// 2. Altered source versions must be plainly marked as such, and must not
// be misrepresented as being the original software.
//
// 3. This notice may not be removed or altered from any source
// distribution.
//
//========================================================================
// Please use C89 style variable declarations in this file because VS 2010
//========================================================================
#include "glfw_internal.h"
// These construct a string literal from individual numeric constants
#define _GLFW_CONCAT_VERSION(m, n, r) #m "." #n "." #r
#define _GLFW_MAKE_VERSION(m, n, r) _GLFW_CONCAT_VERSION(m, n, r)
//////////////////////////////////////////////////////////////////////////
////// GLFW internal API //////
//////////////////////////////////////////////////////////////////////////
static const struct
{
int ID;
GLFWbool (*connect)(int,_GLFWplatform*);
} supportedPlatforms[] =
{
#if defined(_GLFW_WIN32)
{ GLFW_PLATFORM_WIN32, _glfwConnectWin32 },
#endif
#if defined(_GLFW_COCOA)
{ GLFW_PLATFORM_COCOA, _glfwConnectCocoa },
#endif
#if defined(_GLFW_X11)
{ GLFW_PLATFORM_X11, _glfwConnectX11 },
#endif
#if defined(_GLFW_WAYLAND)
{ GLFW_PLATFORM_WAYLAND, _glfwConnectWayland },
#endif
};
GLFWbool _glfwSelectPlatform(int desiredID, _GLFWplatform* platform)
{
const size_t count = sizeof(supportedPlatforms) / sizeof(supportedPlatforms[0]);
size_t i;
if (desiredID != GLFW_ANY_PLATFORM &&
desiredID != GLFW_PLATFORM_WIN32 &&
desiredID != GLFW_PLATFORM_COCOA &&
desiredID != GLFW_PLATFORM_WAYLAND &&
desiredID != GLFW_PLATFORM_X11 &&
desiredID != GLFW_PLATFORM_NULL)
{
_glfwInputError(GLFW_INVALID_ENUM, "Invalid platform ID 0x%08X", desiredID);
return GLFW_FALSE;
}
// Only allow the Null platform if specifically requested
if (desiredID == GLFW_PLATFORM_NULL)
return _glfwConnectNull(desiredID, platform);
else if (count == 0)
{
_glfwInputError(GLFW_PLATFORM_UNAVAILABLE, "This binary only supports the Null platform");
return GLFW_FALSE;
}
if (desiredID == GLFW_ANY_PLATFORM)
{
// If there is exactly one platform available for auto-selection, let it emit the
// error on failure as the platform-specific error description may be more helpful
if (count == 1)
return supportedPlatforms[0].connect(supportedPlatforms[0].ID, platform);
for (i = 0; i < count; i++)
{
if (supportedPlatforms[i].connect(desiredID, platform))
return GLFW_TRUE;
}
_glfwInputError(GLFW_PLATFORM_UNAVAILABLE, "Failed to detect any supported platform");
}
else
{
for (i = 0; i < count; i++)
{
if (supportedPlatforms[i].ID == desiredID)
return supportedPlatforms[i].connect(desiredID, platform);
}
_glfwInputError(GLFW_PLATFORM_UNAVAILABLE, "The requested platform is not supported");
}
return GLFW_FALSE;
}
//////////////////////////////////////////////////////////////////////////
////// GLFW public API //////
//////////////////////////////////////////////////////////////////////////
SSCAPI int glfwGetPlatform(void)
{
_GLFW_REQUIRE_INIT_OR_RETURN(0);
return _glfw.platform.platformID;
}
SSCAPI int glfwPlatformSupported(int platformID)
{
const size_t count = sizeof(supportedPlatforms) / sizeof(supportedPlatforms[0]);
size_t i;
if (platformID != GLFW_PLATFORM_WIN32 &&
platformID != GLFW_PLATFORM_COCOA &&
platformID != GLFW_PLATFORM_WAYLAND &&
platformID != GLFW_PLATFORM_X11 &&
platformID != GLFW_PLATFORM_NULL)
{
_glfwInputError(GLFW_INVALID_ENUM, "Invalid platform ID 0x%08X", platformID);
return GLFW_FALSE;
}
if (platformID == GLFW_PLATFORM_NULL)
return GLFW_TRUE;
for (i = 0; i < count; i++)
{
if (platformID == supportedPlatforms[i].ID)
return GLFW_TRUE;
}
return GLFW_FALSE;
}
SSCAPI const char* glfwGetVersionString(void)
{
return _GLFW_MAKE_VERSION(GLFW_VERSION_MAJOR,
GLFW_VERSION_MINOR,
GLFW_VERSION_REVISION)
#if defined(_GLFW_WIN32)
" Win32 WGL"
#endif
#if defined(_GLFW_COCOA)
" Cocoa NSGL"
#endif
#if defined(_GLFW_WAYLAND)
" Wayland"
#endif
#if defined(_GLFW_X11)
" X11 GLX"
#endif
" Null"
" EGL"
" OSMesa"
#if defined(__MINGW64_VERSION_MAJOR)
" MinGW-w64"
#elif defined(__MINGW32__)
" MinGW"
#elif defined(_MSC_VER)
" VisualC"
#endif
#if defined(_GLFW_USE_HYBRID_HPG) || defined(_GLFW_USE_OPTIMUS_HPG)
" hybrid-GPU"
#endif
#if defined(_POSIX_MONOTONIC_CLOCK)
" monotonic"
#endif
#if defined(_GLFW_BUILD_DLL)
#if defined(_WIN32)
" DLL"
#elif defined(__APPLE__)
" dynamic"
#else
" shared"
#endif
#endif
;
}
@@ -0,0 +1,330 @@
//========================================================================
// GLFW 3.4 - www.glfw.org
//------------------------------------------------------------------------
// Copyright (c) 2002-2006 Marcus Geelnard
// Copyright (c) 2006-2018 Camilla Löwy <elmindreda@glfw.org>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would
// be appreciated but is not required.
//
// 2. Altered source versions must be plainly marked as such, and must not
// be misrepresented as being the original software.
//
// 3. This notice may not be removed or altered from any source
// distribution.
//
//========================================================================
// Please use C89 style variable declarations in this file because VS 2010
//========================================================================
#include "glfw_internal.h"
#include <assert.h>
#include <string.h>
#include <stdlib.h>
#define _GLFW_FIND_LOADER 1
#define _GLFW_REQUIRE_LOADER 2
//////////////////////////////////////////////////////////////////////////
////// GLFW internal API //////
//////////////////////////////////////////////////////////////////////////
GLFWbool _glfwInitVulkan(int mode)
{
VkResult err;
VkExtensionProperties* ep;
PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties;
uint32_t i, count;
if (_glfw.vk.available)
return GLFW_TRUE;
if (_glfw.hints.init.vulkanLoader)
_glfw.vk.GetInstanceProcAddr = _glfw.hints.init.vulkanLoader;
else
{
#if defined(_GLFW_VULKAN_LIBRARY)
_glfw.vk.handle = _glfwPlatformLoadModule(_GLFW_VULKAN_LIBRARY);
#elif defined(_GLFW_WIN32)
_glfw.vk.handle = _glfwPlatformLoadModule("vulkan-1.dll");
#elif defined(_GLFW_COCOA)
_glfw.vk.handle = _glfwPlatformLoadModule("libvulkan.1.dylib");
if (!_glfw.vk.handle)
_glfw.vk.handle = _glfwLoadLocalVulkanLoaderCocoa();
#elif defined(__OpenBSD__) || defined(__NetBSD__)
_glfw.vk.handle = _glfwPlatformLoadModule("libvulkan.so");
#else
_glfw.vk.handle = _glfwPlatformLoadModule("libvulkan.so.1");
#endif
if (!_glfw.vk.handle)
{
if (mode == _GLFW_REQUIRE_LOADER)
_glfwInputError(GLFW_API_UNAVAILABLE, "Vulkan: Loader not found");
return GLFW_FALSE;
}
_glfw.vk.GetInstanceProcAddr = (PFN_vkGetInstanceProcAddr)
_glfwPlatformGetModuleSymbol(_glfw.vk.handle, "vkGetInstanceProcAddr");
if (!_glfw.vk.GetInstanceProcAddr)
{
_glfwInputError(GLFW_API_UNAVAILABLE,
"Vulkan: Loader does not export vkGetInstanceProcAddr");
_glfwTerminateVulkan();
return GLFW_FALSE;
}
}
vkEnumerateInstanceExtensionProperties = (PFN_vkEnumerateInstanceExtensionProperties)
vkGetInstanceProcAddr(NULL, "vkEnumerateInstanceExtensionProperties");
if (!vkEnumerateInstanceExtensionProperties)
{
_glfwInputError(GLFW_API_UNAVAILABLE,
"Vulkan: Failed to retrieve vkEnumerateInstanceExtensionProperties");
_glfwTerminateVulkan();
return GLFW_FALSE;
}
err = vkEnumerateInstanceExtensionProperties(NULL, &count, NULL);
if (err)
{
// NOTE: This happens on systems with a loader but without any Vulkan ICD
if (mode == _GLFW_REQUIRE_LOADER)
{
_glfwInputError(GLFW_API_UNAVAILABLE,
"Vulkan: Failed to query instance extension count: %s",
_glfwGetVulkanResultString(err));
}
_glfwTerminateVulkan();
return GLFW_FALSE;
}
ep = _glfw_calloc(count, sizeof(VkExtensionProperties));
err = vkEnumerateInstanceExtensionProperties(NULL, &count, ep);
if (err)
{
_glfwInputError(GLFW_API_UNAVAILABLE,
"Vulkan: Failed to query instance extensions: %s",
_glfwGetVulkanResultString(err));
_glfw_free(ep);
_glfwTerminateVulkan();
return GLFW_FALSE;
}
for (i = 0; i < count; i++)
{
if (strcmp(ep[i].extensionName, "VK_KHR_surface") == 0)
_glfw.vk.KHR_surface = GLFW_TRUE;
else if (strcmp(ep[i].extensionName, "VK_KHR_win32_surface") == 0)
_glfw.vk.KHR_win32_surface = GLFW_TRUE;
else if (strcmp(ep[i].extensionName, "VK_MVK_macos_surface") == 0)
_glfw.vk.MVK_macos_surface = GLFW_TRUE;
else if (strcmp(ep[i].extensionName, "VK_EXT_metal_surface") == 0)
_glfw.vk.EXT_metal_surface = GLFW_TRUE;
else if (strcmp(ep[i].extensionName, "VK_KHR_xlib_surface") == 0)
_glfw.vk.KHR_xlib_surface = GLFW_TRUE;
else if (strcmp(ep[i].extensionName, "VK_KHR_xcb_surface") == 0)
_glfw.vk.KHR_xcb_surface = GLFW_TRUE;
else if (strcmp(ep[i].extensionName, "VK_KHR_wayland_surface") == 0)
_glfw.vk.KHR_wayland_surface = GLFW_TRUE;
}
_glfw_free(ep);
_glfw.vk.available = GLFW_TRUE;
_glfw.platform.getRequiredInstanceExtensions(_glfw.vk.extensions);
return GLFW_TRUE;
}
void _glfwTerminateVulkan(void)
{
if (_glfw.vk.handle)
_glfwPlatformFreeModule(_glfw.vk.handle);
}
const char* _glfwGetVulkanResultString(VkResult result)
{
switch (result)
{
case VK_SUCCESS:
return "Success";
case VK_NOT_READY:
return "A fence or query has not yet completed";
case VK_TIMEOUT:
return "A wait operation has not completed in the specified time";
case VK_EVENT_SET:
return "An event is signaled";
case VK_EVENT_RESET:
return "An event is unsignaled";
case VK_INCOMPLETE:
return "A return array was too small for the result";
case VK_ERROR_OUT_OF_HOST_MEMORY:
return "A host memory allocation has failed";
case VK_ERROR_OUT_OF_DEVICE_MEMORY:
return "A device memory allocation has failed";
case VK_ERROR_INITIALIZATION_FAILED:
return "Initialization of an object could not be completed for implementation-specific reasons";
case VK_ERROR_DEVICE_LOST:
return "The logical or physical device has been lost";
case VK_ERROR_MEMORY_MAP_FAILED:
return "Mapping of a memory object has failed";
case VK_ERROR_LAYER_NOT_PRESENT:
return "A requested layer is not present or could not be loaded";
case VK_ERROR_EXTENSION_NOT_PRESENT:
return "A requested extension is not supported";
case VK_ERROR_FEATURE_NOT_PRESENT:
return "A requested feature is not supported";
case VK_ERROR_INCOMPATIBLE_DRIVER:
return "The requested version of Vulkan is not supported by the driver or is otherwise incompatible";
case VK_ERROR_TOO_MANY_OBJECTS:
return "Too many objects of the type have already been created";
case VK_ERROR_FORMAT_NOT_SUPPORTED:
return "A requested format is not supported on this device";
case VK_ERROR_SURFACE_LOST_KHR:
return "A surface is no longer available";
case VK_SUBOPTIMAL_KHR:
return "A swapchain no longer matches the surface properties exactly, but can still be used";
case VK_ERROR_OUT_OF_DATE_KHR:
return "A surface has changed in such a way that it is no longer compatible with the swapchain";
case VK_ERROR_INCOMPATIBLE_DISPLAY_KHR:
return "The display used by a swapchain does not use the same presentable image layout";
case VK_ERROR_NATIVE_WINDOW_IN_USE_KHR:
return "The requested window is already connected to a VkSurfaceKHR, or to some other non-Vulkan API";
case VK_ERROR_VALIDATION_FAILED_EXT:
return "A validation layer found an error";
default:
return "ERROR: UNKNOWN VULKAN ERROR";
}
}
//////////////////////////////////////////////////////////////////////////
////// GLFW public API //////
//////////////////////////////////////////////////////////////////////////
SSCAPI int glfwVulkanSupported(void)
{
_GLFW_REQUIRE_INIT_OR_RETURN(GLFW_FALSE);
return _glfwInitVulkan(_GLFW_FIND_LOADER);
}
SSCAPI const char** glfwGetRequiredInstanceExtensions(uint32_t* count)
{
assert(count != NULL);
*count = 0;
_GLFW_REQUIRE_INIT_OR_RETURN(NULL);
if (!_glfwInitVulkan(_GLFW_REQUIRE_LOADER))
return NULL;
if (!_glfw.vk.extensions[0])
return NULL;
*count = 2;
return (const char**) _glfw.vk.extensions;
}
SSCAPI GLFWvkproc glfwGetInstanceProcAddress(VkInstance instance,
const char* procname)
{
GLFWvkproc proc;
assert(procname != NULL);
_GLFW_REQUIRE_INIT_OR_RETURN(NULL);
if (!_glfwInitVulkan(_GLFW_REQUIRE_LOADER))
return NULL;
// NOTE: Vulkan 1.0 and 1.1 vkGetInstanceProcAddr cannot return itself
if (strcmp(procname, "vkGetInstanceProcAddr") == 0)
return (GLFWvkproc) vkGetInstanceProcAddr;
proc = (GLFWvkproc) vkGetInstanceProcAddr(instance, procname);
if (!proc)
{
if (_glfw.vk.handle)
proc = (GLFWvkproc) _glfwPlatformGetModuleSymbol(_glfw.vk.handle, procname);
}
return proc;
}
SSCAPI int glfwGetPhysicalDevicePresentationSupport(VkInstance instance,
VkPhysicalDevice device,
uint32_t queuefamily)
{
assert(instance != VK_NULL_HANDLE);
assert(device != VK_NULL_HANDLE);
_GLFW_REQUIRE_INIT_OR_RETURN(GLFW_FALSE);
if (!_glfwInitVulkan(_GLFW_REQUIRE_LOADER))
return GLFW_FALSE;
if (!_glfw.vk.extensions[0])
{
_glfwInputError(GLFW_API_UNAVAILABLE,
"Vulkan: Window surface creation extensions not found");
return GLFW_FALSE;
}
return _glfw.platform.getPhysicalDevicePresentationSupport(instance,
device,
queuefamily);
}
SSCAPI VkResult glfwCreateWindowSurface(VkInstance instance,
GLFWwindow* handle,
const VkAllocationCallbacks* allocator,
VkSurfaceKHR* surface)
{
_GLFWwindow* window = (_GLFWwindow*) handle;
assert(instance != VK_NULL_HANDLE);
assert(window != NULL);
assert(surface != NULL);
*surface = VK_NULL_HANDLE;
_GLFW_REQUIRE_INIT_OR_RETURN(VK_ERROR_INITIALIZATION_FAILED);
if (!_glfwInitVulkan(_GLFW_REQUIRE_LOADER))
return VK_ERROR_INITIALIZATION_FAILED;
if (!_glfw.vk.extensions[0])
{
_glfwInputError(GLFW_API_UNAVAILABLE,
"Vulkan: Window surface creation extensions not found");
return VK_ERROR_EXTENSION_NOT_PRESENT;
}
if (window->context.client != GLFW_NO_API)
{
_glfwInputError(GLFW_INVALID_VALUE,
"Vulkan: Window surface creation requires the window to have the client API set to GLFW_NO_API");
return VK_ERROR_NATIVE_WINDOW_IN_USE_KHR;
}
return _glfw.platform.createWindowSurface(instance, window, allocator, surface);
}
@@ -0,0 +1,782 @@
//========================================================================
// GLFW 3.4 WGL - www.glfw.org
//------------------------------------------------------------------------
// Copyright (c) 2002-2006 Marcus Geelnard
// Copyright (c) 2006-2019 Camilla Löwy <elmindreda@glfw.org>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would
// be appreciated but is not required.
//
// 2. Altered source versions must be plainly marked as such, and must not
// be misrepresented as being the original software.
//
// 3. This notice may not be removed or altered from any source
// distribution.
//
//========================================================================
// Please use C89 style variable declarations in this file because VS 2010
//========================================================================
#include "glfw_internal.h"
#if defined(_GLFW_WIN32)
#include <stdlib.h>
#include <assert.h>
// Return the value corresponding to the specified attribute
//
static int findPixelFormatAttribValueWGL(const int* attribs,
int attribCount,
const int* values,
int attrib)
{
int i;
for (i = 0; i < attribCount; i++)
{
if (attribs[i] == attrib)
return values[i];
}
_glfwInputErrorWin32(GLFW_PLATFORM_ERROR,
"WGL: Unknown pixel format attribute requested");
return 0;
}
#define ADD_ATTRIB(a) \
{ \
assert((size_t) attribCount < sizeof(attribs) / sizeof(attribs[0])); \
attribs[attribCount++] = a; \
}
#define FIND_ATTRIB_VALUE(a) \
findPixelFormatAttribValueWGL(attribs, attribCount, values, a)
// Return a list of available and usable framebuffer configs
//
static int choosePixelFormatWGL(_GLFWwindow* window,
const _GLFWctxconfig* ctxconfig,
const _GLFWfbconfig* fbconfig)
{
_GLFWfbconfig* usableConfigs;
const _GLFWfbconfig* closest;
int i, pixelFormat, nativeCount, usableCount = 0, attribCount = 0;
int attribs[40];
int values[sizeof(attribs) / sizeof(attribs[0])];
nativeCount = DescribePixelFormat(window->context.wgl.dc,
1,
sizeof(PIXELFORMATDESCRIPTOR),
NULL);
if (_glfw.wgl.ARB_pixel_format)
{
ADD_ATTRIB(WGL_SUPPORT_OPENGL_ARB);
ADD_ATTRIB(WGL_DRAW_TO_WINDOW_ARB);
ADD_ATTRIB(WGL_PIXEL_TYPE_ARB);
ADD_ATTRIB(WGL_ACCELERATION_ARB);
ADD_ATTRIB(WGL_RED_BITS_ARB);
ADD_ATTRIB(WGL_RED_SHIFT_ARB);
ADD_ATTRIB(WGL_GREEN_BITS_ARB);
ADD_ATTRIB(WGL_GREEN_SHIFT_ARB);
ADD_ATTRIB(WGL_BLUE_BITS_ARB);
ADD_ATTRIB(WGL_BLUE_SHIFT_ARB);
ADD_ATTRIB(WGL_ALPHA_BITS_ARB);
ADD_ATTRIB(WGL_ALPHA_SHIFT_ARB);
ADD_ATTRIB(WGL_DEPTH_BITS_ARB);
ADD_ATTRIB(WGL_STENCIL_BITS_ARB);
ADD_ATTRIB(WGL_ACCUM_BITS_ARB);
ADD_ATTRIB(WGL_ACCUM_RED_BITS_ARB);
ADD_ATTRIB(WGL_ACCUM_GREEN_BITS_ARB);
ADD_ATTRIB(WGL_ACCUM_BLUE_BITS_ARB);
ADD_ATTRIB(WGL_ACCUM_ALPHA_BITS_ARB);
ADD_ATTRIB(WGL_AUX_BUFFERS_ARB);
ADD_ATTRIB(WGL_STEREO_ARB);
ADD_ATTRIB(WGL_DOUBLE_BUFFER_ARB);
if (_glfw.wgl.ARB_multisample)
ADD_ATTRIB(WGL_SAMPLES_ARB);
if (ctxconfig->client == GLFW_OPENGL_API)
{
if (_glfw.wgl.ARB_framebuffer_sRGB || _glfw.wgl.EXT_framebuffer_sRGB)
ADD_ATTRIB(WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB);
}
else
{
if (_glfw.wgl.EXT_colorspace)
ADD_ATTRIB(WGL_COLORSPACE_EXT);
}
}
usableConfigs = _glfw_calloc(nativeCount, sizeof(_GLFWfbconfig));
for (i = 0; i < nativeCount; i++)
{
_GLFWfbconfig* u = usableConfigs + usableCount;
pixelFormat = i + 1;
if (_glfw.wgl.ARB_pixel_format)
{
// Get pixel format attributes through "modern" extension
if (!wglGetPixelFormatAttribivARB(window->context.wgl.dc,
pixelFormat, 0,
attribCount,
attribs, values))
{
_glfwInputErrorWin32(GLFW_PLATFORM_ERROR,
"WGL: Failed to retrieve pixel format attributes");
_glfw_free(usableConfigs);
return 0;
}
if (!FIND_ATTRIB_VALUE(WGL_SUPPORT_OPENGL_ARB) ||
!FIND_ATTRIB_VALUE(WGL_DRAW_TO_WINDOW_ARB))
{
continue;
}
if (FIND_ATTRIB_VALUE(WGL_PIXEL_TYPE_ARB) != WGL_TYPE_RGBA_ARB)
continue;
if (FIND_ATTRIB_VALUE(WGL_ACCELERATION_ARB) == WGL_NO_ACCELERATION_ARB)
continue;
if (FIND_ATTRIB_VALUE(WGL_DOUBLE_BUFFER_ARB) != fbconfig->doublebuffer)
continue;
u->redBits = FIND_ATTRIB_VALUE(WGL_RED_BITS_ARB);
u->greenBits = FIND_ATTRIB_VALUE(WGL_GREEN_BITS_ARB);
u->blueBits = FIND_ATTRIB_VALUE(WGL_BLUE_BITS_ARB);
u->alphaBits = FIND_ATTRIB_VALUE(WGL_ALPHA_BITS_ARB);
u->depthBits = FIND_ATTRIB_VALUE(WGL_DEPTH_BITS_ARB);
u->stencilBits = FIND_ATTRIB_VALUE(WGL_STENCIL_BITS_ARB);
u->accumRedBits = FIND_ATTRIB_VALUE(WGL_ACCUM_RED_BITS_ARB);
u->accumGreenBits = FIND_ATTRIB_VALUE(WGL_ACCUM_GREEN_BITS_ARB);
u->accumBlueBits = FIND_ATTRIB_VALUE(WGL_ACCUM_BLUE_BITS_ARB);
u->accumAlphaBits = FIND_ATTRIB_VALUE(WGL_ACCUM_ALPHA_BITS_ARB);
u->auxBuffers = FIND_ATTRIB_VALUE(WGL_AUX_BUFFERS_ARB);
if (FIND_ATTRIB_VALUE(WGL_STEREO_ARB))
u->stereo = GLFW_TRUE;
if (_glfw.wgl.ARB_multisample)
u->samples = FIND_ATTRIB_VALUE(WGL_SAMPLES_ARB);
if (ctxconfig->client == GLFW_OPENGL_API)
{
if (_glfw.wgl.ARB_framebuffer_sRGB ||
_glfw.wgl.EXT_framebuffer_sRGB)
{
if (FIND_ATTRIB_VALUE(WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB))
u->sRGB = GLFW_TRUE;
}
}
else
{
if (_glfw.wgl.EXT_colorspace)
{
if (FIND_ATTRIB_VALUE(WGL_COLORSPACE_EXT) == WGL_COLORSPACE_SRGB_EXT)
u->sRGB = GLFW_TRUE;
}
}
}
else
{
// Get pixel format attributes through legacy PFDs
PIXELFORMATDESCRIPTOR pfd;
if (!DescribePixelFormat(window->context.wgl.dc,
pixelFormat,
sizeof(PIXELFORMATDESCRIPTOR),
&pfd))
{
_glfwInputErrorWin32(GLFW_PLATFORM_ERROR,
"WGL: Failed to describe pixel format");
_glfw_free(usableConfigs);
return 0;
}
if (!(pfd.dwFlags & PFD_DRAW_TO_WINDOW) ||
!(pfd.dwFlags & PFD_SUPPORT_OPENGL))
{
continue;
}
if (!(pfd.dwFlags & PFD_GENERIC_ACCELERATED) &&
(pfd.dwFlags & PFD_GENERIC_FORMAT))
{
continue;
}
if (pfd.iPixelType != PFD_TYPE_RGBA)
continue;
if (!!(pfd.dwFlags & PFD_DOUBLEBUFFER) != fbconfig->doublebuffer)
continue;
u->redBits = pfd.cRedBits;
u->greenBits = pfd.cGreenBits;
u->blueBits = pfd.cBlueBits;
u->alphaBits = pfd.cAlphaBits;
u->depthBits = pfd.cDepthBits;
u->stencilBits = pfd.cStencilBits;
u->accumRedBits = pfd.cAccumRedBits;
u->accumGreenBits = pfd.cAccumGreenBits;
u->accumBlueBits = pfd.cAccumBlueBits;
u->accumAlphaBits = pfd.cAccumAlphaBits;
u->auxBuffers = pfd.cAuxBuffers;
if (pfd.dwFlags & PFD_STEREO)
u->stereo = GLFW_TRUE;
}
u->handle = pixelFormat;
usableCount++;
}
if (!usableCount)
{
_glfwInputError(GLFW_API_UNAVAILABLE,
"WGL: The driver does not appear to support OpenGL");
_glfw_free(usableConfigs);
return 0;
}
closest = _glfwChooseFBConfig(fbconfig, usableConfigs, usableCount);
if (!closest)
{
_glfwInputError(GLFW_FORMAT_UNAVAILABLE,
"WGL: Failed to find a suitable pixel format");
_glfw_free(usableConfigs);
return 0;
}
pixelFormat = (int) closest->handle;
_glfw_free(usableConfigs);
return pixelFormat;
}
#undef ADD_ATTRIB
#undef FIND_ATTRIB_VALUE
static void makeContextCurrentWGL(_GLFWwindow* window)
{
if (window)
{
if (wglMakeCurrent(window->context.wgl.dc, window->context.wgl.handle))
_glfwPlatformSetTls(&_glfw.contextSlot, window);
else
{
_glfwInputErrorWin32(GLFW_PLATFORM_ERROR,
"WGL: Failed to make context current");
_glfwPlatformSetTls(&_glfw.contextSlot, NULL);
}
}
else
{
if (!wglMakeCurrent(NULL, NULL))
{
_glfwInputErrorWin32(GLFW_PLATFORM_ERROR,
"WGL: Failed to clear current context");
}
_glfwPlatformSetTls(&_glfw.contextSlot, NULL);
}
}
static void swapBuffersWGL(_GLFWwindow* window)
{
if (!window->monitor)
{
// HACK: Use DwmFlush when desktop composition is enabled on Windows Vista and 7
if (!IsWindows8OrGreater() && IsWindowsVistaOrGreater())
{
BOOL enabled = FALSE;
if (SUCCEEDED(DwmIsCompositionEnabled(&enabled)) && enabled)
{
int count = abs(window->context.wgl.interval);
while (count--)
DwmFlush();
}
}
}
SwapBuffers(window->context.wgl.dc);
}
static void swapIntervalWGL(int interval)
{
_GLFWwindow* window = _glfwPlatformGetTls(&_glfw.contextSlot);
window->context.wgl.interval = interval;
if (!window->monitor)
{
// HACK: Disable WGL swap interval when desktop composition is enabled on Windows
// Vista and 7 to avoid interfering with DWM vsync
if (!IsWindows8OrGreater() && IsWindowsVistaOrGreater())
{
BOOL enabled = FALSE;
if (SUCCEEDED(DwmIsCompositionEnabled(&enabled)) && enabled)
interval = 0;
}
}
if (_glfw.wgl.EXT_swap_control)
wglSwapIntervalEXT(interval);
}
static int extensionSupportedWGL(const char* extension)
{
const char* extensions = NULL;
if (_glfw.wgl.GetExtensionsStringARB)
extensions = wglGetExtensionsStringARB(wglGetCurrentDC());
else if (_glfw.wgl.GetExtensionsStringEXT)
extensions = wglGetExtensionsStringEXT();
if (!extensions)
return GLFW_FALSE;
return _glfwStringInExtensionString(extension, extensions);
}
static GLFWglproc getProcAddressWGL(const char* procname)
{
const GLFWglproc proc = (GLFWglproc) wglGetProcAddress(procname);
if (proc)
return proc;
return (GLFWglproc) _glfwPlatformGetModuleSymbol(_glfw.wgl.instance, procname);
}
static void destroyContextWGL(_GLFWwindow* window)
{
if (window->context.wgl.handle)
{
wglDeleteContext(window->context.wgl.handle);
window->context.wgl.handle = NULL;
}
}
// Initialize WGL
//
GLFWbool _glfwInitWGL(void)
{
PIXELFORMATDESCRIPTOR pfd;
HGLRC prc, rc;
HDC pdc, dc;
if (_glfw.wgl.instance)
return GLFW_TRUE;
_glfw.wgl.instance = _glfwPlatformLoadModule("opengl32.dll");
if (!_glfw.wgl.instance)
{
_glfwInputErrorWin32(GLFW_PLATFORM_ERROR,
"WGL: Failed to load opengl32.dll");
return GLFW_FALSE;
}
_glfw.wgl.CreateContext = (PFN_wglCreateContext)
_glfwPlatformGetModuleSymbol(_glfw.wgl.instance, "wglCreateContext");
_glfw.wgl.DeleteContext = (PFN_wglDeleteContext)
_glfwPlatformGetModuleSymbol(_glfw.wgl.instance, "wglDeleteContext");
_glfw.wgl.GetProcAddress = (PFN_wglGetProcAddress)
_glfwPlatformGetModuleSymbol(_glfw.wgl.instance, "wglGetProcAddress");
_glfw.wgl.GetCurrentDC = (PFN_wglGetCurrentDC)
_glfwPlatformGetModuleSymbol(_glfw.wgl.instance, "wglGetCurrentDC");
_glfw.wgl.GetCurrentContext = (PFN_wglGetCurrentContext)
_glfwPlatformGetModuleSymbol(_glfw.wgl.instance, "wglGetCurrentContext");
_glfw.wgl.MakeCurrent = (PFN_wglMakeCurrent)
_glfwPlatformGetModuleSymbol(_glfw.wgl.instance, "wglMakeCurrent");
_glfw.wgl.ShareLists = (PFN_wglShareLists)
_glfwPlatformGetModuleSymbol(_glfw.wgl.instance, "wglShareLists");
// NOTE: A dummy context has to be created for opengl32.dll to load the
// OpenGL ICD, from which we can then query WGL extensions
// NOTE: This code will accept the Microsoft GDI ICD; accelerated context
// creation failure occurs during manual pixel format enumeration
dc = GetDC(_glfw.win32.helperWindowHandle);
ZeroMemory(&pfd, sizeof(pfd));
pfd.nSize = sizeof(pfd);
pfd.nVersion = 1;
pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
pfd.iPixelType = PFD_TYPE_RGBA;
pfd.cColorBits = 24;
if (!SetPixelFormat(dc, ChoosePixelFormat(dc, &pfd), &pfd))
{
_glfwInputErrorWin32(GLFW_PLATFORM_ERROR,
"WGL: Failed to set pixel format for dummy context");
return GLFW_FALSE;
}
rc = wglCreateContext(dc);
if (!rc)
{
_glfwInputErrorWin32(GLFW_PLATFORM_ERROR,
"WGL: Failed to create dummy context");
return GLFW_FALSE;
}
pdc = wglGetCurrentDC();
prc = wglGetCurrentContext();
if (!wglMakeCurrent(dc, rc))
{
_glfwInputErrorWin32(GLFW_PLATFORM_ERROR,
"WGL: Failed to make dummy context current");
wglMakeCurrent(pdc, prc);
wglDeleteContext(rc);
return GLFW_FALSE;
}
// NOTE: Functions must be loaded first as they're needed to retrieve the
// extension string that tells us whether the functions are supported
_glfw.wgl.GetExtensionsStringEXT = (PFNWGLGETEXTENSIONSSTRINGEXTPROC)
wglGetProcAddress("wglGetExtensionsStringEXT");
_glfw.wgl.GetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC)
wglGetProcAddress("wglGetExtensionsStringARB");
_glfw.wgl.CreateContextAttribsARB = (PFNWGLCREATECONTEXTATTRIBSARBPROC)
wglGetProcAddress("wglCreateContextAttribsARB");
_glfw.wgl.SwapIntervalEXT = (PFNWGLSWAPINTERVALEXTPROC)
wglGetProcAddress("wglSwapIntervalEXT");
_glfw.wgl.GetPixelFormatAttribivARB = (PFNWGLGETPIXELFORMATATTRIBIVARBPROC)
wglGetProcAddress("wglGetPixelFormatAttribivARB");
// NOTE: WGL_ARB_extensions_string and WGL_EXT_extensions_string are not
// checked below as we are already using them
_glfw.wgl.ARB_multisample =
extensionSupportedWGL("WGL_ARB_multisample");
_glfw.wgl.ARB_framebuffer_sRGB =
extensionSupportedWGL("WGL_ARB_framebuffer_sRGB");
_glfw.wgl.EXT_framebuffer_sRGB =
extensionSupportedWGL("WGL_EXT_framebuffer_sRGB");
_glfw.wgl.ARB_create_context =
extensionSupportedWGL("WGL_ARB_create_context");
_glfw.wgl.ARB_create_context_profile =
extensionSupportedWGL("WGL_ARB_create_context_profile");
_glfw.wgl.EXT_create_context_es2_profile =
extensionSupportedWGL("WGL_EXT_create_context_es2_profile");
_glfw.wgl.ARB_create_context_robustness =
extensionSupportedWGL("WGL_ARB_create_context_robustness");
_glfw.wgl.ARB_create_context_no_error =
extensionSupportedWGL("WGL_ARB_create_context_no_error");
_glfw.wgl.EXT_swap_control =
extensionSupportedWGL("WGL_EXT_swap_control");
_glfw.wgl.EXT_colorspace =
extensionSupportedWGL("WGL_EXT_colorspace");
_glfw.wgl.ARB_pixel_format =
extensionSupportedWGL("WGL_ARB_pixel_format");
_glfw.wgl.ARB_context_flush_control =
extensionSupportedWGL("WGL_ARB_context_flush_control");
wglMakeCurrent(pdc, prc);
wglDeleteContext(rc);
return GLFW_TRUE;
}
// Terminate WGL
//
void _glfwTerminateWGL(void)
{
if (_glfw.wgl.instance)
_glfwPlatformFreeModule(_glfw.wgl.instance);
}
#define SET_ATTRIB(a, v) \
{ \
assert(((size_t) index + 1) < sizeof(attribs) / sizeof(attribs[0])); \
attribs[index++] = a; \
attribs[index++] = v; \
}
// Create the OpenGL or OpenGL ES context
//
GLFWbool _glfwCreateContextWGL(_GLFWwindow* window,
const _GLFWctxconfig* ctxconfig,
const _GLFWfbconfig* fbconfig)
{
int attribs[40];
int pixelFormat;
PIXELFORMATDESCRIPTOR pfd;
HGLRC share = NULL;
if (ctxconfig->share)
share = ctxconfig->share->context.wgl.handle;
window->context.wgl.dc = GetDC(window->win32.handle);
if (!window->context.wgl.dc)
{
_glfwInputError(GLFW_PLATFORM_ERROR,
"WGL: Failed to retrieve DC for window");
return GLFW_FALSE;
}
pixelFormat = choosePixelFormatWGL(window, ctxconfig, fbconfig);
if (!pixelFormat)
return GLFW_FALSE;
if (!DescribePixelFormat(window->context.wgl.dc,
pixelFormat, sizeof(pfd), &pfd))
{
_glfwInputErrorWin32(GLFW_PLATFORM_ERROR,
"WGL: Failed to retrieve PFD for selected pixel format");
return GLFW_FALSE;
}
if (!SetPixelFormat(window->context.wgl.dc, pixelFormat, &pfd))
{
_glfwInputErrorWin32(GLFW_PLATFORM_ERROR,
"WGL: Failed to set selected pixel format");
return GLFW_FALSE;
}
if (ctxconfig->client == GLFW_OPENGL_API)
{
if (ctxconfig->forward)
{
if (!_glfw.wgl.ARB_create_context)
{
_glfwInputError(GLFW_VERSION_UNAVAILABLE,
"WGL: A forward compatible OpenGL context requested but WGL_ARB_create_context is unavailable");
return GLFW_FALSE;
}
}
if (ctxconfig->profile)
{
if (!_glfw.wgl.ARB_create_context_profile)
{
_glfwInputError(GLFW_VERSION_UNAVAILABLE,
"WGL: OpenGL profile requested but WGL_ARB_create_context_profile is unavailable");
return GLFW_FALSE;
}
}
}
else
{
if (!_glfw.wgl.ARB_create_context ||
!_glfw.wgl.ARB_create_context_profile ||
!_glfw.wgl.EXT_create_context_es2_profile)
{
_glfwInputError(GLFW_API_UNAVAILABLE,
"WGL: OpenGL ES requested but WGL_ARB_create_context_es2_profile is unavailable");
return GLFW_FALSE;
}
}
if (_glfw.wgl.ARB_create_context)
{
int index = 0, mask = 0, flags = 0;
if (ctxconfig->client == GLFW_OPENGL_API)
{
if (ctxconfig->forward)
flags |= WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB;
if (ctxconfig->profile == GLFW_OPENGL_CORE_PROFILE)
mask |= WGL_CONTEXT_CORE_PROFILE_BIT_ARB;
else if (ctxconfig->profile == GLFW_OPENGL_COMPAT_PROFILE)
mask |= WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB;
}
else
mask |= WGL_CONTEXT_ES2_PROFILE_BIT_EXT;
if (ctxconfig->debug)
flags |= WGL_CONTEXT_DEBUG_BIT_ARB;
if (ctxconfig->robustness)
{
if (_glfw.wgl.ARB_create_context_robustness)
{
if (ctxconfig->robustness == GLFW_NO_RESET_NOTIFICATION)
{
SET_ATTRIB(WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB,
WGL_NO_RESET_NOTIFICATION_ARB);
}
else if (ctxconfig->robustness == GLFW_LOSE_CONTEXT_ON_RESET)
{
SET_ATTRIB(WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB,
WGL_LOSE_CONTEXT_ON_RESET_ARB);
}
flags |= WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB;
}
}
if (ctxconfig->release)
{
if (_glfw.wgl.ARB_context_flush_control)
{
if (ctxconfig->release == GLFW_RELEASE_BEHAVIOR_NONE)
{
SET_ATTRIB(WGL_CONTEXT_RELEASE_BEHAVIOR_ARB,
WGL_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB);
}
else if (ctxconfig->release == GLFW_RELEASE_BEHAVIOR_FLUSH)
{
SET_ATTRIB(WGL_CONTEXT_RELEASE_BEHAVIOR_ARB,
WGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB);
}
}
}
if (ctxconfig->noerror)
{
if (_glfw.wgl.ARB_create_context_no_error)
SET_ATTRIB(WGL_CONTEXT_OPENGL_NO_ERROR_ARB, GLFW_TRUE);
}
// NOTE: Only request an explicitly versioned context when necessary, as
// explicitly requesting version 1.0 does not always return the
// highest version supported by the driver
if (ctxconfig->major != 1 || ctxconfig->minor != 0)
{
SET_ATTRIB(WGL_CONTEXT_MAJOR_VERSION_ARB, ctxconfig->major);
SET_ATTRIB(WGL_CONTEXT_MINOR_VERSION_ARB, ctxconfig->minor);
}
if (flags)
SET_ATTRIB(WGL_CONTEXT_FLAGS_ARB, flags);
if (mask)
SET_ATTRIB(WGL_CONTEXT_PROFILE_MASK_ARB, mask);
SET_ATTRIB(0, 0);
window->context.wgl.handle =
wglCreateContextAttribsARB(window->context.wgl.dc, share, attribs);
if (!window->context.wgl.handle)
{
const DWORD error = GetLastError();
if (error == (0xc0070000 | ERROR_INVALID_VERSION_ARB))
{
if (ctxconfig->client == GLFW_OPENGL_API)
{
_glfwInputError(GLFW_VERSION_UNAVAILABLE,
"WGL: Driver does not support OpenGL version %i.%i",
ctxconfig->major,
ctxconfig->minor);
}
else
{
_glfwInputError(GLFW_VERSION_UNAVAILABLE,
"WGL: Driver does not support OpenGL ES version %i.%i",
ctxconfig->major,
ctxconfig->minor);
}
}
else if (error == (0xc0070000 | ERROR_INVALID_PROFILE_ARB))
{
_glfwInputError(GLFW_VERSION_UNAVAILABLE,
"WGL: Driver does not support the requested OpenGL profile");
}
else if (error == (0xc0070000 | ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB))
{
_glfwInputError(GLFW_INVALID_VALUE,
"WGL: The share context is not compatible with the requested context");
}
else
{
if (ctxconfig->client == GLFW_OPENGL_API)
{
_glfwInputError(GLFW_VERSION_UNAVAILABLE,
"WGL: Failed to create OpenGL context");
}
else
{
_glfwInputError(GLFW_VERSION_UNAVAILABLE,
"WGL: Failed to create OpenGL ES context");
}
}
return GLFW_FALSE;
}
}
else
{
window->context.wgl.handle = wglCreateContext(window->context.wgl.dc);
if (!window->context.wgl.handle)
{
_glfwInputErrorWin32(GLFW_VERSION_UNAVAILABLE,
"WGL: Failed to create OpenGL context");
return GLFW_FALSE;
}
if (share)
{
if (!wglShareLists(share, window->context.wgl.handle))
{
_glfwInputErrorWin32(GLFW_PLATFORM_ERROR,
"WGL: Failed to enable sharing with specified OpenGL context");
return GLFW_FALSE;
}
}
}
window->context.makeCurrent = makeContextCurrentWGL;
window->context.swapBuffers = swapBuffersWGL;
window->context.swapInterval = swapIntervalWGL;
window->context.extensionSupported = extensionSupportedWGL;
window->context.getProcAddress = getProcAddressWGL;
window->context.destroy = destroyContextWGL;
return GLFW_TRUE;
}
#undef SET_ATTRIB
SSCAPI HGLRC glfwGetWGLContext(GLFWwindow* handle)
{
_GLFWwindow* window = (_GLFWwindow*) handle;
_GLFW_REQUIRE_INIT_OR_RETURN(NULL);
if (_glfw.platform.platformID != GLFW_PLATFORM_WIN32)
{
_glfwInputError(GLFW_PLATFORM_UNAVAILABLE,
"WGL: Platform not initialized");
return NULL;
}
if (window->context.source != GLFW_NATIVE_CONTEXT_API)
{
_glfwInputError(GLFW_NO_WINDOW_CONTEXT, NULL);
return NULL;
}
return window->context.wgl.handle;
}
#endif // _GLFW_WIN32
@@ -0,0 +1,725 @@
//========================================================================
// GLFW 3.4 Win32 - www.glfw.org
//------------------------------------------------------------------------
// Copyright (c) 2002-2006 Marcus Geelnard
// Copyright (c) 2006-2019 Camilla Löwy <elmindreda@glfw.org>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would
// be appreciated but is not required.
//
// 2. Altered source versions must be plainly marked as such, and must not
// be misrepresented as being the original software.
//
// 3. This notice may not be removed or altered from any source
// distribution.
//
//========================================================================
// Please use C89 style variable declarations in this file because VS 2010
//========================================================================
#include "glfw_internal.h"
#if defined(_GLFW_WIN32)
#include <stdlib.h>
static const GUID _glfw_GUID_DEVINTERFACE_HID =
{ 0x4d1e55b2,0xf16f,0x11cf,{0x88,0xcb,0x00,0x11,0x11,0x00,0x00,0x30} };
#define GUID_DEVINTERFACE_HID _glfw_GUID_DEVINTERFACE_HID
#if defined(_GLFW_USE_HYBRID_HPG) || defined(_GLFW_USE_OPTIMUS_HPG)
#if defined(_GLFW_BUILD_DLL)
#pragma message("These symbols must be exported by the executable and have no effect in a DLL")
#endif
// Executables (but not DLLs) exporting this symbol with this value will be
// automatically directed to the high-performance GPU on Nvidia Optimus systems
// with up-to-date drivers
//
__declspec(dllexport) DWORD NvOptimusEnablement = 1;
// Executables (but not DLLs) exporting this symbol with this value will be
// automatically directed to the high-performance GPU on AMD PowerXpress systems
// with up-to-date drivers
//
__declspec(dllexport) int AmdPowerXpressRequestHighPerformance = 1;
#endif // _GLFW_USE_HYBRID_HPG
#if defined(_GLFW_BUILD_DLL)
#endif // _GLFW_BUILD_DLL
// Load necessary libraries (DLLs)
//
static GLFWbool loadLibraries(void)
{
if (!GetModuleHandleExW(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS |
GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT,
(const WCHAR*)&_glfw,
(HMODULE*)&_glfw.win32.instance))
{
_glfwInputErrorWin32(GLFW_PLATFORM_ERROR,
"Win32: Failed to retrieve own module handle");
return GLFW_FALSE;
}
_glfw.win32.user32.instance = _glfwPlatformLoadModule("user32.dll");
if (!_glfw.win32.user32.instance)
{
_glfwInputErrorWin32(GLFW_PLATFORM_ERROR,
"Win32: Failed to load user32.dll");
return GLFW_FALSE;
}
_glfw.win32.user32.SetProcessDPIAware_ = (PFN_SetProcessDPIAware)
_glfwPlatformGetModuleSymbol(_glfw.win32.user32.instance, "SetProcessDPIAware");
_glfw.win32.user32.ChangeWindowMessageFilterEx_ = (PFN_ChangeWindowMessageFilterEx)
_glfwPlatformGetModuleSymbol(_glfw.win32.user32.instance, "ChangeWindowMessageFilterEx");
_glfw.win32.user32.EnableNonClientDpiScaling_ = (PFN_EnableNonClientDpiScaling)
_glfwPlatformGetModuleSymbol(_glfw.win32.user32.instance, "EnableNonClientDpiScaling");
_glfw.win32.user32.SetProcessDpiAwarenessContext_ = (PFN_SetProcessDpiAwarenessContext)
_glfwPlatformGetModuleSymbol(_glfw.win32.user32.instance, "SetProcessDpiAwarenessContext");
_glfw.win32.user32.GetDpiForWindow_ = (PFN_GetDpiForWindow)
_glfwPlatformGetModuleSymbol(_glfw.win32.user32.instance, "GetDpiForWindow");
_glfw.win32.user32.AdjustWindowRectExForDpi_ = (PFN_AdjustWindowRectExForDpi)
_glfwPlatformGetModuleSymbol(_glfw.win32.user32.instance, "AdjustWindowRectExForDpi");
_glfw.win32.user32.GetSystemMetricsForDpi_ = (PFN_GetSystemMetricsForDpi)
_glfwPlatformGetModuleSymbol(_glfw.win32.user32.instance, "GetSystemMetricsForDpi");
_glfw.win32.dinput8.instance = _glfwPlatformLoadModule("dinput8.dll");
if (_glfw.win32.dinput8.instance)
{
_glfw.win32.dinput8.Create = (PFN_DirectInput8Create)
_glfwPlatformGetModuleSymbol(_glfw.win32.dinput8.instance, "DirectInput8Create");
}
{
int i;
const char* names[] =
{
"xinput1_4.dll",
"xinput1_3.dll",
"xinput9_1_0.dll",
"xinput1_2.dll",
"xinput1_1.dll",
NULL
};
for (i = 0; names[i]; i++)
{
_glfw.win32.xinput.instance = _glfwPlatformLoadModule(names[i]);
if (_glfw.win32.xinput.instance)
{
_glfw.win32.xinput.GetCapabilities = (PFN_XInputGetCapabilities)
_glfwPlatformGetModuleSymbol(_glfw.win32.xinput.instance, "XInputGetCapabilities");
_glfw.win32.xinput.GetState = (PFN_XInputGetState)
_glfwPlatformGetModuleSymbol(_glfw.win32.xinput.instance, "XInputGetState");
break;
}
}
}
_glfw.win32.dwmapi.instance = _glfwPlatformLoadModule("dwmapi.dll");
if (_glfw.win32.dwmapi.instance)
{
_glfw.win32.dwmapi.IsCompositionEnabled = (PFN_DwmIsCompositionEnabled)
_glfwPlatformGetModuleSymbol(_glfw.win32.dwmapi.instance, "DwmIsCompositionEnabled");
_glfw.win32.dwmapi.Flush = (PFN_DwmFlush)
_glfwPlatformGetModuleSymbol(_glfw.win32.dwmapi.instance, "DwmFlush");
_glfw.win32.dwmapi.EnableBlurBehindWindow = (PFN_DwmEnableBlurBehindWindow)
_glfwPlatformGetModuleSymbol(_glfw.win32.dwmapi.instance, "DwmEnableBlurBehindWindow");
_glfw.win32.dwmapi.GetColorizationColor = (PFN_DwmGetColorizationColor)
_glfwPlatformGetModuleSymbol(_glfw.win32.dwmapi.instance, "DwmGetColorizationColor");
}
_glfw.win32.shcore.instance = _glfwPlatformLoadModule("shcore.dll");
if (_glfw.win32.shcore.instance)
{
_glfw.win32.shcore.SetProcessDpiAwareness_ = (PFN_SetProcessDpiAwareness)
_glfwPlatformGetModuleSymbol(_glfw.win32.shcore.instance, "SetProcessDpiAwareness");
_glfw.win32.shcore.GetDpiForMonitor_ = (PFN_GetDpiForMonitor)
_glfwPlatformGetModuleSymbol(_glfw.win32.shcore.instance, "GetDpiForMonitor");
}
_glfw.win32.ntdll.instance = _glfwPlatformLoadModule("ntdll.dll");
if (_glfw.win32.ntdll.instance)
{
_glfw.win32.ntdll.RtlVerifyVersionInfo_ = (PFN_RtlVerifyVersionInfo)
_glfwPlatformGetModuleSymbol(_glfw.win32.ntdll.instance, "RtlVerifyVersionInfo");
}
return GLFW_TRUE;
}
// Unload used libraries (DLLs)
//
static void freeLibraries(void)
{
if (_glfw.win32.xinput.instance)
_glfwPlatformFreeModule(_glfw.win32.xinput.instance);
if (_glfw.win32.dinput8.instance)
_glfwPlatformFreeModule(_glfw.win32.dinput8.instance);
if (_glfw.win32.user32.instance)
_glfwPlatformFreeModule(_glfw.win32.user32.instance);
if (_glfw.win32.dwmapi.instance)
_glfwPlatformFreeModule(_glfw.win32.dwmapi.instance);
if (_glfw.win32.shcore.instance)
_glfwPlatformFreeModule(_glfw.win32.shcore.instance);
if (_glfw.win32.ntdll.instance)
_glfwPlatformFreeModule(_glfw.win32.ntdll.instance);
}
// Create key code translation tables
//
static void createKeyTables(void)
{
int scancode;
memset(_glfw.win32.keycodes, -1, sizeof(_glfw.win32.keycodes));
memset(_glfw.win32.scancodes, -1, sizeof(_glfw.win32.scancodes));
_glfw.win32.keycodes[0x00B] = GLFW_KEY_0;
_glfw.win32.keycodes[0x002] = GLFW_KEY_1;
_glfw.win32.keycodes[0x003] = GLFW_KEY_2;
_glfw.win32.keycodes[0x004] = GLFW_KEY_3;
_glfw.win32.keycodes[0x005] = GLFW_KEY_4;
_glfw.win32.keycodes[0x006] = GLFW_KEY_5;
_glfw.win32.keycodes[0x007] = GLFW_KEY_6;
_glfw.win32.keycodes[0x008] = GLFW_KEY_7;
_glfw.win32.keycodes[0x009] = GLFW_KEY_8;
_glfw.win32.keycodes[0x00A] = GLFW_KEY_9;
_glfw.win32.keycodes[0x01E] = GLFW_KEY_A;
_glfw.win32.keycodes[0x030] = GLFW_KEY_B;
_glfw.win32.keycodes[0x02E] = GLFW_KEY_C;
_glfw.win32.keycodes[0x020] = GLFW_KEY_D;
_glfw.win32.keycodes[0x012] = GLFW_KEY_E;
_glfw.win32.keycodes[0x021] = GLFW_KEY_F;
_glfw.win32.keycodes[0x022] = GLFW_KEY_G;
_glfw.win32.keycodes[0x023] = GLFW_KEY_H;
_glfw.win32.keycodes[0x017] = GLFW_KEY_I;
_glfw.win32.keycodes[0x024] = GLFW_KEY_J;
_glfw.win32.keycodes[0x025] = GLFW_KEY_K;
_glfw.win32.keycodes[0x026] = GLFW_KEY_L;
_glfw.win32.keycodes[0x032] = GLFW_KEY_M;
_glfw.win32.keycodes[0x031] = GLFW_KEY_N;
_glfw.win32.keycodes[0x018] = GLFW_KEY_O;
_glfw.win32.keycodes[0x019] = GLFW_KEY_P;
_glfw.win32.keycodes[0x010] = GLFW_KEY_Q;
_glfw.win32.keycodes[0x013] = GLFW_KEY_R;
_glfw.win32.keycodes[0x01F] = GLFW_KEY_S;
_glfw.win32.keycodes[0x014] = GLFW_KEY_T;
_glfw.win32.keycodes[0x016] = GLFW_KEY_U;
_glfw.win32.keycodes[0x02F] = GLFW_KEY_V;
_glfw.win32.keycodes[0x011] = GLFW_KEY_W;
_glfw.win32.keycodes[0x02D] = GLFW_KEY_X;
_glfw.win32.keycodes[0x015] = GLFW_KEY_Y;
_glfw.win32.keycodes[0x02C] = GLFW_KEY_Z;
_glfw.win32.keycodes[0x028] = GLFW_KEY_APOSTROPHE;
_glfw.win32.keycodes[0x02B] = GLFW_KEY_BACKSLASH;
_glfw.win32.keycodes[0x033] = GLFW_KEY_COMMA;
_glfw.win32.keycodes[0x00D] = GLFW_KEY_EQUAL;
_glfw.win32.keycodes[0x029] = GLFW_KEY_GRAVE_ACCENT;
_glfw.win32.keycodes[0x01A] = GLFW_KEY_LEFT_BRACKET;
_glfw.win32.keycodes[0x00C] = GLFW_KEY_MINUS;
_glfw.win32.keycodes[0x034] = GLFW_KEY_PERIOD;
_glfw.win32.keycodes[0x01B] = GLFW_KEY_RIGHT_BRACKET;
_glfw.win32.keycodes[0x027] = GLFW_KEY_SEMICOLON;
_glfw.win32.keycodes[0x035] = GLFW_KEY_SLASH;
_glfw.win32.keycodes[0x056] = GLFW_KEY_WORLD_2;
_glfw.win32.keycodes[0x00E] = GLFW_KEY_BACKSPACE;
_glfw.win32.keycodes[0x153] = GLFW_KEY_DELETE;
_glfw.win32.keycodes[0x14F] = GLFW_KEY_END;
_glfw.win32.keycodes[0x01C] = GLFW_KEY_ENTER;
_glfw.win32.keycodes[0x001] = GLFW_KEY_ESCAPE;
_glfw.win32.keycodes[0x147] = GLFW_KEY_HOME;
_glfw.win32.keycodes[0x152] = GLFW_KEY_INSERT;
_glfw.win32.keycodes[0x15D] = GLFW_KEY_MENU;
_glfw.win32.keycodes[0x151] = GLFW_KEY_PAGE_DOWN;
_glfw.win32.keycodes[0x149] = GLFW_KEY_PAGE_UP;
_glfw.win32.keycodes[0x045] = GLFW_KEY_PAUSE;
_glfw.win32.keycodes[0x039] = GLFW_KEY_SPACE;
_glfw.win32.keycodes[0x00F] = GLFW_KEY_TAB;
_glfw.win32.keycodes[0x03A] = GLFW_KEY_CAPS_LOCK;
_glfw.win32.keycodes[0x145] = GLFW_KEY_NUM_LOCK;
_glfw.win32.keycodes[0x046] = GLFW_KEY_SCROLL_LOCK;
_glfw.win32.keycodes[0x03B] = GLFW_KEY_F1;
_glfw.win32.keycodes[0x03C] = GLFW_KEY_F2;
_glfw.win32.keycodes[0x03D] = GLFW_KEY_F3;
_glfw.win32.keycodes[0x03E] = GLFW_KEY_F4;
_glfw.win32.keycodes[0x03F] = GLFW_KEY_F5;
_glfw.win32.keycodes[0x040] = GLFW_KEY_F6;
_glfw.win32.keycodes[0x041] = GLFW_KEY_F7;
_glfw.win32.keycodes[0x042] = GLFW_KEY_F8;
_glfw.win32.keycodes[0x043] = GLFW_KEY_F9;
_glfw.win32.keycodes[0x044] = GLFW_KEY_F10;
_glfw.win32.keycodes[0x057] = GLFW_KEY_F11;
_glfw.win32.keycodes[0x058] = GLFW_KEY_F12;
_glfw.win32.keycodes[0x064] = GLFW_KEY_F13;
_glfw.win32.keycodes[0x065] = GLFW_KEY_F14;
_glfw.win32.keycodes[0x066] = GLFW_KEY_F15;
_glfw.win32.keycodes[0x067] = GLFW_KEY_F16;
_glfw.win32.keycodes[0x068] = GLFW_KEY_F17;
_glfw.win32.keycodes[0x069] = GLFW_KEY_F18;
_glfw.win32.keycodes[0x06A] = GLFW_KEY_F19;
_glfw.win32.keycodes[0x06B] = GLFW_KEY_F20;
_glfw.win32.keycodes[0x06C] = GLFW_KEY_F21;
_glfw.win32.keycodes[0x06D] = GLFW_KEY_F22;
_glfw.win32.keycodes[0x06E] = GLFW_KEY_F23;
_glfw.win32.keycodes[0x076] = GLFW_KEY_F24;
_glfw.win32.keycodes[0x038] = GLFW_KEY_LEFT_ALT;
_glfw.win32.keycodes[0x01D] = GLFW_KEY_LEFT_CONTROL;
_glfw.win32.keycodes[0x02A] = GLFW_KEY_LEFT_SHIFT;
_glfw.win32.keycodes[0x15B] = GLFW_KEY_LEFT_SUPER;
_glfw.win32.keycodes[0x137] = GLFW_KEY_PRINT_SCREEN;
_glfw.win32.keycodes[0x138] = GLFW_KEY_RIGHT_ALT;
_glfw.win32.keycodes[0x11D] = GLFW_KEY_RIGHT_CONTROL;
_glfw.win32.keycodes[0x036] = GLFW_KEY_RIGHT_SHIFT;
_glfw.win32.keycodes[0x15C] = GLFW_KEY_RIGHT_SUPER;
_glfw.win32.keycodes[0x150] = GLFW_KEY_DOWN;
_glfw.win32.keycodes[0x14B] = GLFW_KEY_LEFT;
_glfw.win32.keycodes[0x14D] = GLFW_KEY_RIGHT;
_glfw.win32.keycodes[0x148] = GLFW_KEY_UP;
_glfw.win32.keycodes[0x052] = GLFW_KEY_KP_0;
_glfw.win32.keycodes[0x04F] = GLFW_KEY_KP_1;
_glfw.win32.keycodes[0x050] = GLFW_KEY_KP_2;
_glfw.win32.keycodes[0x051] = GLFW_KEY_KP_3;
_glfw.win32.keycodes[0x04B] = GLFW_KEY_KP_4;
_glfw.win32.keycodes[0x04C] = GLFW_KEY_KP_5;
_glfw.win32.keycodes[0x04D] = GLFW_KEY_KP_6;
_glfw.win32.keycodes[0x047] = GLFW_KEY_KP_7;
_glfw.win32.keycodes[0x048] = GLFW_KEY_KP_8;
_glfw.win32.keycodes[0x049] = GLFW_KEY_KP_9;
_glfw.win32.keycodes[0x04E] = GLFW_KEY_KP_ADD;
_glfw.win32.keycodes[0x053] = GLFW_KEY_KP_DECIMAL;
_glfw.win32.keycodes[0x135] = GLFW_KEY_KP_DIVIDE;
_glfw.win32.keycodes[0x11C] = GLFW_KEY_KP_ENTER;
_glfw.win32.keycodes[0x059] = GLFW_KEY_KP_EQUAL;
_glfw.win32.keycodes[0x037] = GLFW_KEY_KP_MULTIPLY;
_glfw.win32.keycodes[0x04A] = GLFW_KEY_KP_SUBTRACT;
for (scancode = 0; scancode < 512; scancode++)
{
if (_glfw.win32.keycodes[scancode] > 0)
_glfw.win32.scancodes[_glfw.win32.keycodes[scancode]] = scancode;
}
}
// Window procedure for the hidden helper window
//
static LRESULT CALLBACK helperWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_DISPLAYCHANGE:
_glfwPollMonitorsWin32();
break;
case WM_DEVICECHANGE:
{
if (!_glfw.joysticksInitialized)
break;
if (wParam == DBT_DEVICEARRIVAL)
{
DEV_BROADCAST_HDR* dbh = (DEV_BROADCAST_HDR*)lParam;
if (dbh && dbh->dbch_devicetype == DBT_DEVTYP_DEVICEINTERFACE)
_glfwDetectJoystickConnectionWin32();
}
else if (wParam == DBT_DEVICEREMOVECOMPLETE)
{
DEV_BROADCAST_HDR* dbh = (DEV_BROADCAST_HDR*)lParam;
if (dbh && dbh->dbch_devicetype == DBT_DEVTYP_DEVICEINTERFACE)
_glfwDetectJoystickDisconnectionWin32();
}
break;
}
}
return DefWindowProcW(hWnd, uMsg, wParam, lParam);
}
// Creates a dummy window for behind-the-scenes work
//
static GLFWbool createHelperWindow(void)
{
MSG msg;
WNDCLASSEXW wc = { sizeof(wc) };
wc.style = CS_OWNDC;
wc.lpfnWndProc = (WNDPROC)helperWindowProc;
wc.hInstance = _glfw.win32.instance;
wc.lpszClassName = L"GLFW3 Helper";
_glfw.win32.helperWindowClass = RegisterClassExW(&wc);
if (!_glfw.win32.helperWindowClass)
{
_glfwInputErrorWin32(GLFW_PLATFORM_ERROR,
"Win32: Failed to register helper window class");
return GLFW_FALSE;
}
_glfw.win32.helperWindowHandle =
CreateWindowExW(WS_EX_OVERLAPPEDWINDOW,
MAKEINTATOM(_glfw.win32.helperWindowClass),
L"GLFW message window",
WS_CLIPSIBLINGS | WS_CLIPCHILDREN,
0, 0, 1, 1,
NULL, NULL,
_glfw.win32.instance,
NULL);
if (!_glfw.win32.helperWindowHandle)
{
_glfwInputErrorWin32(GLFW_PLATFORM_ERROR,
"Win32: Failed to create helper window");
return GLFW_FALSE;
}
// HACK: The command to the first ShowWindow call is ignored if the parent
// process passed along a STARTUPINFO, so clear that with a no-op call
ShowWindow(_glfw.win32.helperWindowHandle, SW_HIDE);
// Register for HID device notifications
{
DEV_BROADCAST_DEVICEINTERFACE_W dbi;
ZeroMemory(&dbi, sizeof(dbi));
dbi.dbcc_size = sizeof(dbi);
dbi.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
dbi.dbcc_classguid = GUID_DEVINTERFACE_HID;
_glfw.win32.deviceNotificationHandle =
RegisterDeviceNotificationW(_glfw.win32.helperWindowHandle,
(DEV_BROADCAST_HDR*)&dbi,
DEVICE_NOTIFY_WINDOW_HANDLE);
}
while (PeekMessageW(&msg, _glfw.win32.helperWindowHandle, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessageW(&msg);
}
return GLFW_TRUE;
}
//////////////////////////////////////////////////////////////////////////
////// GLFW internal API //////
//////////////////////////////////////////////////////////////////////////
// Returns a wide string version of the specified UTF-8 string
//
WCHAR* _glfwCreateWideStringFromUTF8Win32(const char* source)
{
WCHAR* target;
int count;
count = MultiByteToWideChar(CP_UTF8, 0, source, -1, NULL, 0);
if (!count)
{
_glfwInputErrorWin32(GLFW_PLATFORM_ERROR,
"Win32: Failed to convert string from UTF-8");
return NULL;
}
target = _glfw_calloc(count, sizeof(WCHAR));
if (!MultiByteToWideChar(CP_UTF8, 0, source, -1, target, count))
{
_glfwInputErrorWin32(GLFW_PLATFORM_ERROR,
"Win32: Failed to convert string from UTF-8");
_glfw_free(target);
return NULL;
}
return target;
}
// Returns a UTF-8 string version of the specified wide string
//
char* _glfwCreateUTF8FromWideStringWin32(const WCHAR* source)
{
char* target;
int size;
size = WideCharToMultiByte(CP_UTF8, 0, source, -1, NULL, 0, NULL, NULL);
if (!size)
{
_glfwInputErrorWin32(GLFW_PLATFORM_ERROR,
"Win32: Failed to convert string to UTF-8");
return NULL;
}
target = _glfw_calloc(size, 1);
if (!WideCharToMultiByte(CP_UTF8, 0, source, -1, target, size, NULL, NULL))
{
_glfwInputErrorWin32(GLFW_PLATFORM_ERROR,
"Win32: Failed to convert string to UTF-8");
_glfw_free(target);
return NULL;
}
return target;
}
// Reports the specified error, appending information about the last Win32 error
//
void _glfwInputErrorWin32(int error, const char* description)
{
WCHAR buffer[_GLFW_MESSAGE_SIZE] = L"";
char message[_GLFW_MESSAGE_SIZE] = "";
FormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS |
FORMAT_MESSAGE_MAX_WIDTH_MASK,
NULL,
GetLastError() & 0xffff,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
buffer,
sizeof(buffer) / sizeof(WCHAR),
NULL);
WideCharToMultiByte(CP_UTF8, 0, buffer, -1, message, sizeof(message), NULL, NULL);
_glfwInputError(error, "%s: %s", description, message);
}
// Updates key names according to the current keyboard layout
//
void _glfwUpdateKeyNamesWin32(void)
{
int key;
BYTE state[256] = { 0 };
memset(_glfw.win32.keynames, 0, sizeof(_glfw.win32.keynames));
for (key = GLFW_KEY_SPACE; key <= GLFW_KEY_LAST; key++)
{
UINT vk;
int scancode, length;
WCHAR chars[16];
scancode = _glfw.win32.scancodes[key];
if (scancode == -1)
continue;
if (key >= GLFW_KEY_KP_0 && key <= GLFW_KEY_KP_ADD)
{
const UINT vks[] = {
VK_NUMPAD0, VK_NUMPAD1, VK_NUMPAD2, VK_NUMPAD3,
VK_NUMPAD4, VK_NUMPAD5, VK_NUMPAD6, VK_NUMPAD7,
VK_NUMPAD8, VK_NUMPAD9, VK_DECIMAL, VK_DIVIDE,
VK_MULTIPLY, VK_SUBTRACT, VK_ADD
};
vk = vks[key - GLFW_KEY_KP_0];
}
else
vk = MapVirtualKeyW(scancode, MAPVK_VSC_TO_VK);
length = ToUnicode(vk, scancode, state,
chars, sizeof(chars) / sizeof(WCHAR),
0);
if (length == -1)
{
// This is a dead key, so we need a second simulated key press
// to make it output its own character (usually a diacritic)
length = ToUnicode(vk, scancode, state,
chars, sizeof(chars) / sizeof(WCHAR),
0);
}
if (length < 1)
continue;
WideCharToMultiByte(CP_UTF8, 0, chars, 1,
_glfw.win32.keynames[key],
sizeof(_glfw.win32.keynames[key]),
NULL, NULL);
}
}
// Replacement for IsWindowsVersionOrGreater, as we cannot rely on the
// application having a correct embedded manifest
//
BOOL _glfwIsWindowsVersionOrGreaterWin32(WORD major, WORD minor, WORD sp)
{
OSVERSIONINFOEXW osvi = { sizeof(osvi), major, minor, 0, 0, {0}, sp };
DWORD mask = VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR;
ULONGLONG cond = VerSetConditionMask(0, VER_MAJORVERSION, VER_GREATER_EQUAL);
cond = VerSetConditionMask(cond, VER_MINORVERSION, VER_GREATER_EQUAL);
cond = VerSetConditionMask(cond, VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL);
// HACK: Use RtlVerifyVersionInfo instead of VerifyVersionInfoW as the
// latter lies unless the user knew to embed a non-default manifest
// announcing support for Windows 10 via supportedOS GUID
return RtlVerifyVersionInfo(&osvi, mask, cond) == 0;
}
// Checks whether we are on at least the specified build of Windows 10
//
BOOL _glfwIsWindows10BuildOrGreaterWin32(WORD build)
{
OSVERSIONINFOEXW osvi = { sizeof(osvi), 10, 0, build };
DWORD mask = VER_MAJORVERSION | VER_MINORVERSION | VER_BUILDNUMBER;
ULONGLONG cond = VerSetConditionMask(0, VER_MAJORVERSION, VER_GREATER_EQUAL);
cond = VerSetConditionMask(cond, VER_MINORVERSION, VER_GREATER_EQUAL);
cond = VerSetConditionMask(cond, VER_BUILDNUMBER, VER_GREATER_EQUAL);
// HACK: Use RtlVerifyVersionInfo instead of VerifyVersionInfoW as the
// latter lies unless the user knew to embed a non-default manifest
// announcing support for Windows 10 via supportedOS GUID
return RtlVerifyVersionInfo(&osvi, mask, cond) == 0;
}
GLFWbool _glfwConnectWin32(int platformID, _GLFWplatform* platform)
{
const _GLFWplatform win32 =
{
GLFW_PLATFORM_WIN32,
_glfwInitWin32,
_glfwTerminateWin32,
_glfwGetCursorPosWin32,
_glfwSetCursorPosWin32,
_glfwSetCursorModeWin32,
_glfwSetRawMouseMotionWin32,
_glfwRawMouseMotionSupportedWin32,
_glfwCreateCursorWin32,
_glfwCreateStandardCursorWin32,
_glfwDestroyCursorWin32,
_glfwSetCursorWin32,
_glfwGetScancodeNameWin32,
_glfwGetKeyScancodeWin32,
_glfwSetClipboardStringWin32,
_glfwGetClipboardStringWin32,
_glfwInitJoysticksWin32,
_glfwTerminateJoysticksWin32,
_glfwPollJoystickWin32,
_glfwGetMappingNameWin32,
_glfwUpdateGamepadGUIDWin32,
_glfwFreeMonitorWin32,
_glfwGetMonitorPosWin32,
_glfwGetMonitorContentScaleWin32,
_glfwGetMonitorWorkareaWin32,
_glfwGetVideoModesWin32,
_glfwGetVideoModeWin32,
_glfwGetGammaRampWin32,
_glfwSetGammaRampWin32,
_glfwCreateWindowWin32,
_glfwDestroyWindowWin32,
_glfwSetWindowTitleWin32,
_glfwSetWindowIconWin32,
_glfwGetWindowPosWin32,
_glfwSetWindowPosWin32,
_glfwGetWindowSizeWin32,
_glfwSetWindowSizeWin32,
_glfwSetWindowSizeLimitsWin32,
_glfwSetWindowAspectRatioWin32,
_glfwGetFramebufferSizeWin32,
_glfwGetWindowFrameSizeWin32,
_glfwGetWindowContentScaleWin32,
_glfwIconifyWindowWin32,
_glfwRestoreWindowWin32,
_glfwMaximizeWindowWin32,
_glfwShowWindowWin32,
_glfwHideWindowWin32,
_glfwRequestWindowAttentionWin32,
_glfwFocusWindowWin32,
_glfwSetWindowMonitorWin32,
_glfwWindowFocusedWin32,
_glfwWindowIconifiedWin32,
_glfwWindowVisibleWin32,
_glfwWindowMaximizedWin32,
_glfwWindowHoveredWin32,
_glfwFramebufferTransparentWin32,
_glfwGetWindowOpacityWin32,
_glfwSetWindowResizableWin32,
_glfwSetWindowDecoratedWin32,
_glfwSetWindowFloatingWin32,
_glfwSetWindowOpacityWin32,
_glfwSetWindowMousePassthroughWin32,
_glfwPollEventsWin32,
_glfwWaitEventsWin32,
_glfwWaitEventsTimeoutWin32,
_glfwPostEmptyEventWin32,
_glfwGetEGLPlatformWin32,
_glfwGetEGLNativeDisplayWin32,
_glfwGetEGLNativeWindowWin32,
_glfwGetRequiredInstanceExtensionsWin32,
_glfwGetPhysicalDevicePresentationSupportWin32,
_glfwCreateWindowSurfaceWin32,
};
*platform = win32;
return GLFW_TRUE;
}
int _glfwInitWin32(void)
{
if (!loadLibraries())
return GLFW_FALSE;
createKeyTables();
_glfwUpdateKeyNamesWin32();
if (_glfwIsWindows10Version1703OrGreaterWin32())
SetProcessDpiAwarenessContext(DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2);
else if (IsWindows8Point1OrGreater())
SetProcessDpiAwareness(PROCESS_PER_MONITOR_DPI_AWARE);
else if (IsWindowsVistaOrGreater())
SetProcessDPIAware();
if (!createHelperWindow())
return GLFW_FALSE;
_glfwPollMonitorsWin32();
return GLFW_TRUE;
}
void _glfwTerminateWin32(void)
{
if (_glfw.win32.deviceNotificationHandle)
UnregisterDeviceNotification(_glfw.win32.deviceNotificationHandle);
if (_glfw.win32.helperWindowHandle)
DestroyWindow(_glfw.win32.helperWindowHandle);
if (_glfw.win32.helperWindowClass)
UnregisterClassW(MAKEINTATOM(_glfw.win32.helperWindowClass), _glfw.win32.instance);
if (_glfw.win32.mainWindowClass)
UnregisterClassW(MAKEINTATOM(_glfw.win32.mainWindowClass), _glfw.win32.instance);
_glfw_free(_glfw.win32.clipboardString);
_glfw_free(_glfw.win32.rawInput);
_glfwTerminateWGL();
_glfwTerminateEGL();
_glfwTerminateOSMesa();
freeLibraries();
}
#endif // _GLFW_WIN32
@@ -0,0 +1,762 @@
//========================================================================
// GLFW 3.4 Win32 - www.glfw.org
//------------------------------------------------------------------------
// Copyright (c) 2002-2006 Marcus Geelnard
// Copyright (c) 2006-2019 Camilla Löwy <elmindreda@glfw.org>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would
// be appreciated but is not required.
//
// 2. Altered source versions must be plainly marked as such, and must not
// be misrepresented as being the original software.
//
// 3. This notice may not be removed or altered from any source
// distribution.
//
//========================================================================
// Please use C89 style variable declarations in this file because VS 2010
//========================================================================
#include "glfw_internal.h"
#if defined(_GLFW_WIN32)
#include <stdio.h>
#include <math.h>
#define _GLFW_TYPE_AXIS 0
#define _GLFW_TYPE_SLIDER 1
#define _GLFW_TYPE_BUTTON 2
#define _GLFW_TYPE_POV 3
// Data produced with DirectInput device object enumeration
//
typedef struct _GLFWobjenumWin32
{
IDirectInputDevice8W* device;
_GLFWjoyobjectWin32* objects;
int objectCount;
int axisCount;
int sliderCount;
int buttonCount;
int povCount;
} _GLFWobjenumWin32;
// Define local copies of the necessary GUIDs
//
static const GUID _glfw_IID_IDirectInput8W =
{0xbf798031,0x483a,0x4da2,{0xaa,0x99,0x5d,0x64,0xed,0x36,0x97,0x00}};
static const GUID _glfw_GUID_XAxis =
{0xa36d02e0,0xc9f3,0x11cf,{0xbf,0xc7,0x44,0x45,0x53,0x54,0x00,0x00}};
static const GUID _glfw_GUID_YAxis =
{0xa36d02e1,0xc9f3,0x11cf,{0xbf,0xc7,0x44,0x45,0x53,0x54,0x00,0x00}};
static const GUID _glfw_GUID_ZAxis =
{0xa36d02e2,0xc9f3,0x11cf,{0xbf,0xc7,0x44,0x45,0x53,0x54,0x00,0x00}};
static const GUID _glfw_GUID_RxAxis =
{0xa36d02f4,0xc9f3,0x11cf,{0xbf,0xc7,0x44,0x45,0x53,0x54,0x00,0x00}};
static const GUID _glfw_GUID_RyAxis =
{0xa36d02f5,0xc9f3,0x11cf,{0xbf,0xc7,0x44,0x45,0x53,0x54,0x00,0x00}};
static const GUID _glfw_GUID_RzAxis =
{0xa36d02e3,0xc9f3,0x11cf,{0xbf,0xc7,0x44,0x45,0x53,0x54,0x00,0x00}};
static const GUID _glfw_GUID_Slider =
{0xa36d02e4,0xc9f3,0x11cf,{0xbf,0xc7,0x44,0x45,0x53,0x54,0x00,0x00}};
static const GUID _glfw_GUID_POV =
{0xa36d02f2,0xc9f3,0x11cf,{0xbf,0xc7,0x44,0x45,0x53,0x54,0x00,0x00}};
#define IID_IDirectInput8W _glfw_IID_IDirectInput8W
#define GUID_XAxis _glfw_GUID_XAxis
#define GUID_YAxis _glfw_GUID_YAxis
#define GUID_ZAxis _glfw_GUID_ZAxis
#define GUID_RxAxis _glfw_GUID_RxAxis
#define GUID_RyAxis _glfw_GUID_RyAxis
#define GUID_RzAxis _glfw_GUID_RzAxis
#define GUID_Slider _glfw_GUID_Slider
#define GUID_POV _glfw_GUID_POV
// Object data array for our clone of c_dfDIJoystick
// Generated with https://github.com/elmindreda/c_dfDIJoystick2
//
static DIOBJECTDATAFORMAT _glfwObjectDataFormats[] =
{
{ &GUID_XAxis,DIJOFS_X,DIDFT_AXIS|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,DIDOI_ASPECTPOSITION },
{ &GUID_YAxis,DIJOFS_Y,DIDFT_AXIS|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,DIDOI_ASPECTPOSITION },
{ &GUID_ZAxis,DIJOFS_Z,DIDFT_AXIS|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,DIDOI_ASPECTPOSITION },
{ &GUID_RxAxis,DIJOFS_RX,DIDFT_AXIS|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,DIDOI_ASPECTPOSITION },
{ &GUID_RyAxis,DIJOFS_RY,DIDFT_AXIS|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,DIDOI_ASPECTPOSITION },
{ &GUID_RzAxis,DIJOFS_RZ,DIDFT_AXIS|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,DIDOI_ASPECTPOSITION },
{ &GUID_Slider,DIJOFS_SLIDER(0),DIDFT_AXIS|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,DIDOI_ASPECTPOSITION },
{ &GUID_Slider,DIJOFS_SLIDER(1),DIDFT_AXIS|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,DIDOI_ASPECTPOSITION },
{ &GUID_POV,DIJOFS_POV(0),DIDFT_POV|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 },
{ &GUID_POV,DIJOFS_POV(1),DIDFT_POV|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 },
{ &GUID_POV,DIJOFS_POV(2),DIDFT_POV|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 },
{ &GUID_POV,DIJOFS_POV(3),DIDFT_POV|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 },
{ NULL,DIJOFS_BUTTON(0),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 },
{ NULL,DIJOFS_BUTTON(1),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 },
{ NULL,DIJOFS_BUTTON(2),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 },
{ NULL,DIJOFS_BUTTON(3),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 },
{ NULL,DIJOFS_BUTTON(4),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 },
{ NULL,DIJOFS_BUTTON(5),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 },
{ NULL,DIJOFS_BUTTON(6),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 },
{ NULL,DIJOFS_BUTTON(7),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 },
{ NULL,DIJOFS_BUTTON(8),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 },
{ NULL,DIJOFS_BUTTON(9),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 },
{ NULL,DIJOFS_BUTTON(10),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 },
{ NULL,DIJOFS_BUTTON(11),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 },
{ NULL,DIJOFS_BUTTON(12),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 },
{ NULL,DIJOFS_BUTTON(13),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 },
{ NULL,DIJOFS_BUTTON(14),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 },
{ NULL,DIJOFS_BUTTON(15),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 },
{ NULL,DIJOFS_BUTTON(16),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 },
{ NULL,DIJOFS_BUTTON(17),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 },
{ NULL,DIJOFS_BUTTON(18),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 },
{ NULL,DIJOFS_BUTTON(19),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 },
{ NULL,DIJOFS_BUTTON(20),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 },
{ NULL,DIJOFS_BUTTON(21),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 },
{ NULL,DIJOFS_BUTTON(22),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 },
{ NULL,DIJOFS_BUTTON(23),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 },
{ NULL,DIJOFS_BUTTON(24),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 },
{ NULL,DIJOFS_BUTTON(25),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 },
{ NULL,DIJOFS_BUTTON(26),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 },
{ NULL,DIJOFS_BUTTON(27),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 },
{ NULL,DIJOFS_BUTTON(28),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 },
{ NULL,DIJOFS_BUTTON(29),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 },
{ NULL,DIJOFS_BUTTON(30),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 },
{ NULL,DIJOFS_BUTTON(31),DIDFT_BUTTON|DIDFT_OPTIONAL|DIDFT_ANYINSTANCE,0 },
};
// Our clone of c_dfDIJoystick
//
static const DIDATAFORMAT _glfwDataFormat =
{
sizeof(DIDATAFORMAT),
sizeof(DIOBJECTDATAFORMAT),
DIDFT_ABSAXIS,
sizeof(DIJOYSTATE),
sizeof(_glfwObjectDataFormats) / sizeof(DIOBJECTDATAFORMAT),
_glfwObjectDataFormats
};
// Returns a description fitting the specified XInput capabilities
//
static const char* getDeviceDescription(const XINPUT_CAPABILITIES* xic)
{
switch (xic->SubType)
{
case XINPUT_DEVSUBTYPE_WHEEL:
return "XInput Wheel";
case XINPUT_DEVSUBTYPE_ARCADE_STICK:
return "XInput Arcade Stick";
case XINPUT_DEVSUBTYPE_FLIGHT_STICK:
return "XInput Flight Stick";
case XINPUT_DEVSUBTYPE_DANCE_PAD:
return "XInput Dance Pad";
case XINPUT_DEVSUBTYPE_GUITAR:
return "XInput Guitar";
case XINPUT_DEVSUBTYPE_DRUM_KIT:
return "XInput Drum Kit";
case XINPUT_DEVSUBTYPE_GAMEPAD:
{
if (xic->Flags & XINPUT_CAPS_WIRELESS)
return "Wireless Xbox Controller";
else
return "Xbox Controller";
}
}
return "Unknown XInput Device";
}
// Lexically compare device objects
//
static int compareJoystickObjects(const void* first, const void* second)
{
const _GLFWjoyobjectWin32* fo = first;
const _GLFWjoyobjectWin32* so = second;
if (fo->type != so->type)
return fo->type - so->type;
return fo->offset - so->offset;
}
// Checks whether the specified device supports XInput
// Technique from FDInputJoystickManager::IsXInputDeviceFast in ZDoom
//
static GLFWbool supportsXInput(const GUID* guid)
{
UINT i, count = 0;
RAWINPUTDEVICELIST* ridl;
GLFWbool result = GLFW_FALSE;
if (GetRawInputDeviceList(NULL, &count, sizeof(RAWINPUTDEVICELIST)) != 0)
return GLFW_FALSE;
ridl = _glfw_calloc(count, sizeof(RAWINPUTDEVICELIST));
if (GetRawInputDeviceList(ridl, &count, sizeof(RAWINPUTDEVICELIST)) == (UINT) -1)
{
_glfw_free(ridl);
return GLFW_FALSE;
}
for (i = 0; i < count; i++)
{
RID_DEVICE_INFO rdi;
char name[256];
UINT size;
if (ridl[i].dwType != RIM_TYPEHID)
continue;
ZeroMemory(&rdi, sizeof(rdi));
rdi.cbSize = sizeof(rdi);
size = sizeof(rdi);
if ((INT) GetRawInputDeviceInfoA(ridl[i].hDevice,
RIDI_DEVICEINFO,
&rdi, &size) == -1)
{
continue;
}
if (MAKELONG(rdi.hid.dwVendorId, rdi.hid.dwProductId) != (LONG) guid->Data1)
continue;
memset(name, 0, sizeof(name));
size = sizeof(name);
if ((INT) GetRawInputDeviceInfoA(ridl[i].hDevice,
RIDI_DEVICENAME,
name, &size) == -1)
{
break;
}
name[sizeof(name) - 1] = '\0';
if (strstr(name, "IG_"))
{
result = GLFW_TRUE;
break;
}
}
_glfw_free(ridl);
return result;
}
// Frees all resources associated with the specified joystick
//
static void closeJoystick(_GLFWjoystick* js)
{
_glfwInputJoystick(js, GLFW_DISCONNECTED);
if (js->win32.device)
{
IDirectInputDevice8_Unacquire(js->win32.device);
IDirectInputDevice8_Release(js->win32.device);
}
_glfw_free(js->win32.objects);
_glfwFreeJoystick(js);
}
// DirectInput device object enumeration callback
// Insights gleaned from SDL
//
static BOOL CALLBACK deviceObjectCallback(const DIDEVICEOBJECTINSTANCEW* doi,
void* user)
{
_GLFWobjenumWin32* data = user;
_GLFWjoyobjectWin32* object = data->objects + data->objectCount;
if (DIDFT_GETTYPE(doi->dwType) & DIDFT_AXIS)
{
DIPROPRANGE dipr;
if (memcmp(&doi->guidType, &GUID_Slider, sizeof(GUID)) == 0)
object->offset = DIJOFS_SLIDER(data->sliderCount);
else if (memcmp(&doi->guidType, &GUID_XAxis, sizeof(GUID)) == 0)
object->offset = DIJOFS_X;
else if (memcmp(&doi->guidType, &GUID_YAxis, sizeof(GUID)) == 0)
object->offset = DIJOFS_Y;
else if (memcmp(&doi->guidType, &GUID_ZAxis, sizeof(GUID)) == 0)
object->offset = DIJOFS_Z;
else if (memcmp(&doi->guidType, &GUID_RxAxis, sizeof(GUID)) == 0)
object->offset = DIJOFS_RX;
else if (memcmp(&doi->guidType, &GUID_RyAxis, sizeof(GUID)) == 0)
object->offset = DIJOFS_RY;
else if (memcmp(&doi->guidType, &GUID_RzAxis, sizeof(GUID)) == 0)
object->offset = DIJOFS_RZ;
else
return DIENUM_CONTINUE;
ZeroMemory(&dipr, sizeof(dipr));
dipr.diph.dwSize = sizeof(dipr);
dipr.diph.dwHeaderSize = sizeof(dipr.diph);
dipr.diph.dwObj = doi->dwType;
dipr.diph.dwHow = DIPH_BYID;
dipr.lMin = -32768;
dipr.lMax = 32767;
if (FAILED(IDirectInputDevice8_SetProperty(data->device,
DIPROP_RANGE,
&dipr.diph)))
{
return DIENUM_CONTINUE;
}
if (memcmp(&doi->guidType, &GUID_Slider, sizeof(GUID)) == 0)
{
object->type = _GLFW_TYPE_SLIDER;
data->sliderCount++;
}
else
{
object->type = _GLFW_TYPE_AXIS;
data->axisCount++;
}
}
else if (DIDFT_GETTYPE(doi->dwType) & DIDFT_BUTTON)
{
object->offset = DIJOFS_BUTTON(data->buttonCount);
object->type = _GLFW_TYPE_BUTTON;
data->buttonCount++;
}
else if (DIDFT_GETTYPE(doi->dwType) & DIDFT_POV)
{
object->offset = DIJOFS_POV(data->povCount);
object->type = _GLFW_TYPE_POV;
data->povCount++;
}
data->objectCount++;
return DIENUM_CONTINUE;
}
// DirectInput device enumeration callback
//
static BOOL CALLBACK deviceCallback(const DIDEVICEINSTANCE* di, void* user)
{
int jid = 0;
DIDEVCAPS dc;
DIPROPDWORD dipd;
IDirectInputDevice8* device;
_GLFWobjenumWin32 data;
_GLFWjoystick* js;
char guid[33];
char name[256];
for (jid = 0; jid <= GLFW_JOYSTICK_LAST; jid++)
{
js = _glfw.joysticks + jid;
if (js->connected)
{
if (memcmp(&js->win32.guid, &di->guidInstance, sizeof(GUID)) == 0)
return DIENUM_CONTINUE;
}
}
if (supportsXInput(&di->guidProduct))
return DIENUM_CONTINUE;
if (FAILED(IDirectInput8_CreateDevice(_glfw.win32.dinput8.api,
&di->guidInstance,
&device,
NULL)))
{
_glfwInputError(GLFW_PLATFORM_ERROR, "Win32: Failed to create device");
return DIENUM_CONTINUE;
}
if (FAILED(IDirectInputDevice8_SetDataFormat(device, &_glfwDataFormat)))
{
_glfwInputError(GLFW_PLATFORM_ERROR,
"Win32: Failed to set device data format");
IDirectInputDevice8_Release(device);
return DIENUM_CONTINUE;
}
ZeroMemory(&dc, sizeof(dc));
dc.dwSize = sizeof(dc);
if (FAILED(IDirectInputDevice8_GetCapabilities(device, &dc)))
{
_glfwInputError(GLFW_PLATFORM_ERROR,
"Win32: Failed to query device capabilities");
IDirectInputDevice8_Release(device);
return DIENUM_CONTINUE;
}
ZeroMemory(&dipd, sizeof(dipd));
dipd.diph.dwSize = sizeof(dipd);
dipd.diph.dwHeaderSize = sizeof(dipd.diph);
dipd.diph.dwHow = DIPH_DEVICE;
dipd.dwData = DIPROPAXISMODE_ABS;
if (FAILED(IDirectInputDevice8_SetProperty(device,
DIPROP_AXISMODE,
&dipd.diph)))
{
_glfwInputError(GLFW_PLATFORM_ERROR,
"Win32: Failed to set device axis mode");
IDirectInputDevice8_Release(device);
return DIENUM_CONTINUE;
}
memset(&data, 0, sizeof(data));
data.device = device;
data.objects = _glfw_calloc(dc.dwAxes + (size_t) dc.dwButtons + dc.dwPOVs,
sizeof(_GLFWjoyobjectWin32));
if (FAILED(IDirectInputDevice8_EnumObjects(device,
deviceObjectCallback,
&data,
DIDFT_AXIS | DIDFT_BUTTON | DIDFT_POV)))
{
_glfwInputError(GLFW_PLATFORM_ERROR,
"Win32: Failed to enumerate device objects");
IDirectInputDevice8_Release(device);
_glfw_free(data.objects);
return DIENUM_CONTINUE;
}
qsort(data.objects, data.objectCount,
sizeof(_GLFWjoyobjectWin32),
compareJoystickObjects);
if (!WideCharToMultiByte(CP_UTF8, 0,
di->tszInstanceName, -1,
name, sizeof(name),
NULL, NULL))
{
_glfwInputError(GLFW_PLATFORM_ERROR,
"Win32: Failed to convert joystick name to UTF-8");
IDirectInputDevice8_Release(device);
_glfw_free(data.objects);
return DIENUM_STOP;
}
// Generate a joystick GUID that matches the SDL 2.0.5+ one
if (memcmp(&di->guidProduct.Data4[2], "PIDVID", 6) == 0)
{
sprintf(guid, "03000000%02x%02x0000%02x%02x000000000000",
(uint8_t) di->guidProduct.Data1,
(uint8_t) (di->guidProduct.Data1 >> 8),
(uint8_t) (di->guidProduct.Data1 >> 16),
(uint8_t) (di->guidProduct.Data1 >> 24));
}
else
{
sprintf(guid, "05000000%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x00",
name[0], name[1], name[2], name[3],
name[4], name[5], name[6], name[7],
name[8], name[9], name[10]);
}
js = _glfwAllocJoystick(name, guid,
data.axisCount + data.sliderCount,
data.buttonCount,
data.povCount);
if (!js)
{
IDirectInputDevice8_Release(device);
_glfw_free(data.objects);
return DIENUM_STOP;
}
js->win32.device = device;
js->win32.guid = di->guidInstance;
js->win32.objects = data.objects;
js->win32.objectCount = data.objectCount;
_glfwInputJoystick(js, GLFW_CONNECTED);
return DIENUM_CONTINUE;
}
//////////////////////////////////////////////////////////////////////////
////// GLFW internal API //////
//////////////////////////////////////////////////////////////////////////
// Checks for new joysticks after DBT_DEVICEARRIVAL
//
void _glfwDetectJoystickConnectionWin32(void)
{
if (_glfw.win32.xinput.instance)
{
DWORD index;
for (index = 0; index < XUSER_MAX_COUNT; index++)
{
int jid;
char guid[33];
XINPUT_CAPABILITIES xic;
_GLFWjoystick* js;
for (jid = 0; jid <= GLFW_JOYSTICK_LAST; jid++)
{
if (_glfw.joysticks[jid].connected &&
_glfw.joysticks[jid].win32.device == NULL &&
_glfw.joysticks[jid].win32.index == index)
{
break;
}
}
if (jid <= GLFW_JOYSTICK_LAST)
continue;
if (XInputGetCapabilities(index, 0, &xic) != ERROR_SUCCESS)
continue;
// Generate a joystick GUID that matches the SDL 2.0.5+ one
sprintf(guid, "78696e707574%02x000000000000000000",
xic.SubType & 0xff);
js = _glfwAllocJoystick(getDeviceDescription(&xic), guid, 6, 10, 1);
if (!js)
continue;
js->win32.index = index;
_glfwInputJoystick(js, GLFW_CONNECTED);
}
}
if (_glfw.win32.dinput8.api)
{
if (FAILED(IDirectInput8_EnumDevices(_glfw.win32.dinput8.api,
DI8DEVCLASS_GAMECTRL,
deviceCallback,
NULL,
DIEDFL_ALLDEVICES)))
{
_glfwInputError(GLFW_PLATFORM_ERROR,
"Failed to enumerate DirectInput8 devices");
return;
}
}
}
// Checks for joystick disconnection after DBT_DEVICEREMOVECOMPLETE
//
void _glfwDetectJoystickDisconnectionWin32(void)
{
int jid;
for (jid = 0; jid <= GLFW_JOYSTICK_LAST; jid++)
{
_GLFWjoystick* js = _glfw.joysticks + jid;
if (js->connected)
_glfwPollJoystickWin32(js, _GLFW_POLL_PRESENCE);
}
}
//////////////////////////////////////////////////////////////////////////
////// GLFW platform API //////
//////////////////////////////////////////////////////////////////////////
GLFWbool _glfwInitJoysticksWin32(void)
{
if (_glfw.win32.dinput8.instance)
{
if (FAILED(DirectInput8Create(_glfw.win32.instance,
DIRECTINPUT_VERSION,
&IID_IDirectInput8W,
(void**) &_glfw.win32.dinput8.api,
NULL)))
{
_glfwInputError(GLFW_PLATFORM_ERROR,
"Win32: Failed to create interface");
return GLFW_FALSE;
}
}
_glfwDetectJoystickConnectionWin32();
return GLFW_TRUE;
}
void _glfwTerminateJoysticksWin32(void)
{
int jid;
for (jid = GLFW_JOYSTICK_1; jid <= GLFW_JOYSTICK_LAST; jid++)
closeJoystick(_glfw.joysticks + jid);
if (_glfw.win32.dinput8.api)
IDirectInput8_Release(_glfw.win32.dinput8.api);
}
GLFWbool _glfwPollJoystickWin32(_GLFWjoystick* js, int mode)
{
if (js->win32.device)
{
int i, ai = 0, bi = 0, pi = 0;
HRESULT result;
DIJOYSTATE state = {0};
IDirectInputDevice8_Poll(js->win32.device);
result = IDirectInputDevice8_GetDeviceState(js->win32.device,
sizeof(state),
&state);
if (result == DIERR_NOTACQUIRED || result == DIERR_INPUTLOST)
{
IDirectInputDevice8_Acquire(js->win32.device);
IDirectInputDevice8_Poll(js->win32.device);
result = IDirectInputDevice8_GetDeviceState(js->win32.device,
sizeof(state),
&state);
}
if (FAILED(result))
{
closeJoystick(js);
return GLFW_FALSE;
}
if (mode == _GLFW_POLL_PRESENCE)
return GLFW_TRUE;
for (i = 0; i < js->win32.objectCount; i++)
{
const void* data = (char*) &state + js->win32.objects[i].offset;
switch (js->win32.objects[i].type)
{
case _GLFW_TYPE_AXIS:
case _GLFW_TYPE_SLIDER:
{
const float value = (*((LONG*) data) + 0.5f) / 32767.5f;
_glfwInputJoystickAxis(js, ai, value);
ai++;
break;
}
case _GLFW_TYPE_BUTTON:
{
const char value = (*((BYTE*) data) & 0x80) != 0;
_glfwInputJoystickButton(js, bi, value);
bi++;
break;
}
case _GLFW_TYPE_POV:
{
const int states[9] =
{
GLFW_HAT_UP,
GLFW_HAT_RIGHT_UP,
GLFW_HAT_RIGHT,
GLFW_HAT_RIGHT_DOWN,
GLFW_HAT_DOWN,
GLFW_HAT_LEFT_DOWN,
GLFW_HAT_LEFT,
GLFW_HAT_LEFT_UP,
GLFW_HAT_CENTERED
};
// Screams of horror are appropriate at this point
int stateIndex = LOWORD(*(DWORD*) data) / (45 * DI_DEGREES);
if (stateIndex < 0 || stateIndex > 8)
stateIndex = 8;
_glfwInputJoystickHat(js, pi, states[stateIndex]);
pi++;
break;
}
}
}
}
else
{
int i, dpad = 0;
DWORD result;
XINPUT_STATE xis;
const WORD buttons[10] =
{
XINPUT_GAMEPAD_A,
XINPUT_GAMEPAD_B,
XINPUT_GAMEPAD_X,
XINPUT_GAMEPAD_Y,
XINPUT_GAMEPAD_LEFT_SHOULDER,
XINPUT_GAMEPAD_RIGHT_SHOULDER,
XINPUT_GAMEPAD_BACK,
XINPUT_GAMEPAD_START,
XINPUT_GAMEPAD_LEFT_THUMB,
XINPUT_GAMEPAD_RIGHT_THUMB
};
result = XInputGetState(js->win32.index, &xis);
if (result != ERROR_SUCCESS)
{
if (result == ERROR_DEVICE_NOT_CONNECTED)
closeJoystick(js);
return GLFW_FALSE;
}
if (mode == _GLFW_POLL_PRESENCE)
return GLFW_TRUE;
_glfwInputJoystickAxis(js, 0, (xis.Gamepad.sThumbLX + 0.5f) / 32767.5f);
_glfwInputJoystickAxis(js, 1, -(xis.Gamepad.sThumbLY + 0.5f) / 32767.5f);
_glfwInputJoystickAxis(js, 2, (xis.Gamepad.sThumbRX + 0.5f) / 32767.5f);
_glfwInputJoystickAxis(js, 3, -(xis.Gamepad.sThumbRY + 0.5f) / 32767.5f);
_glfwInputJoystickAxis(js, 4, xis.Gamepad.bLeftTrigger / 127.5f - 1.f);
_glfwInputJoystickAxis(js, 5, xis.Gamepad.bRightTrigger / 127.5f - 1.f);
for (i = 0; i < 10; i++)
{
const char value = (xis.Gamepad.wButtons & buttons[i]) ? 1 : 0;
_glfwInputJoystickButton(js, i, value);
}
if (xis.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_UP)
dpad |= GLFW_HAT_UP;
if (xis.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_RIGHT)
dpad |= GLFW_HAT_RIGHT;
if (xis.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_DOWN)
dpad |= GLFW_HAT_DOWN;
if (xis.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_LEFT)
dpad |= GLFW_HAT_LEFT;
_glfwInputJoystickHat(js, 0, dpad);
}
return GLFW_TRUE;
}
const char* _glfwGetMappingNameWin32(void)
{
return "Windows";
}
void _glfwUpdateGamepadGUIDWin32(char* guid)
{
if (strcmp(guid + 20, "504944564944") == 0)
{
char original[33];
strncpy(original, guid, sizeof(original) - 1);
sprintf(guid, "03000000%.4s0000%.4s000000000000",
original, original + 4);
}
}
#endif // _GLFW_WIN32
@@ -0,0 +1,53 @@
//========================================================================
// GLFW 3.4 Win32 - www.glfw.org
//------------------------------------------------------------------------
// Copyright (c) 2021 Camilla Löwy <elmindreda@glfw.org>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would
// be appreciated but is not required.
//
// 2. Altered source versions must be plainly marked as such, and must not
// be misrepresented as being the original software.
//
// 3. This notice may not be removed or altered from any source
// distribution.
//
//========================================================================
// Please use C89 style variable declarations in this file because VS 2010
//========================================================================
#include "glfw_internal.h"
#if defined(GLFW_BUILD_WIN32_MODULE)
//////////////////////////////////////////////////////////////////////////
////// GLFW platform API //////
//////////////////////////////////////////////////////////////////////////
void* _glfwPlatformLoadModule(const char* path)
{
return LoadLibraryA(path);
}
void _glfwPlatformFreeModule(void* module)
{
FreeLibrary((HMODULE)module);
}
GLFWproc _glfwPlatformGetModuleSymbol(void* module, const char* name)
{
return (GLFWproc)GetProcAddress((HMODULE)module, name);
}
#endif // GLFW_BUILD_WIN32_MODULE
@@ -0,0 +1,551 @@
//========================================================================
// GLFW 3.4 Win32 - www.glfw.org
//------------------------------------------------------------------------
// Copyright (c) 2002-2006 Marcus Geelnard
// Copyright (c) 2006-2019 Camilla Löwy <elmindreda@glfw.org>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would
// be appreciated but is not required.
//
// 2. Altered source versions must be plainly marked as such, and must not
// be misrepresented as being the original software.
//
// 3. This notice may not be removed or altered from any source
// distribution.
//
//========================================================================
// Please use C89 style variable declarations in this file because VS 2010
//========================================================================
#include "glfw_internal.h"
#if defined(_GLFW_WIN32)
#include <stdlib.h>
#include <string.h>
#include <limits.h>
#include <wchar.h>
// Callback for EnumDisplayMonitors in createMonitor
//
static BOOL CALLBACK monitorCallback(HMONITOR handle,
HDC dc,
RECT* rect,
LPARAM data)
{
MONITORINFOEXW mi;
ZeroMemory(&mi, sizeof(mi));
mi.cbSize = sizeof(mi);
if (GetMonitorInfoW(handle, (MONITORINFO*) &mi))
{
_GLFWmonitor* monitor = (_GLFWmonitor*) data;
if (wcscmp(mi.szDevice, monitor->win32.adapterName) == 0)
monitor->win32.handle = handle;
}
return TRUE;
}
// Create monitor from an adapter and (optionally) a display
//
static _GLFWmonitor* createMonitor(DISPLAY_DEVICEW* adapter,
DISPLAY_DEVICEW* display)
{
_GLFWmonitor* monitor;
int widthMM, heightMM;
char* name;
HDC dc;
DEVMODEW dm;
RECT rect;
if (display)
name = _glfwCreateUTF8FromWideStringWin32(display->DeviceString);
else
name = _glfwCreateUTF8FromWideStringWin32(adapter->DeviceString);
if (!name)
return NULL;
ZeroMemory(&dm, sizeof(dm));
dm.dmSize = sizeof(dm);
EnumDisplaySettingsW(adapter->DeviceName, ENUM_CURRENT_SETTINGS, &dm);
dc = CreateDCW(L"DISPLAY", adapter->DeviceName, NULL, NULL);
if (IsWindows8Point1OrGreater())
{
widthMM = GetDeviceCaps(dc, HORZSIZE);
heightMM = GetDeviceCaps(dc, VERTSIZE);
}
else
{
widthMM = (int) (dm.dmPelsWidth * 25.4f / GetDeviceCaps(dc, LOGPIXELSX));
heightMM = (int) (dm.dmPelsHeight * 25.4f / GetDeviceCaps(dc, LOGPIXELSY));
}
DeleteDC(dc);
monitor = _glfwAllocMonitor(name, widthMM, heightMM);
_glfw_free(name);
if (adapter->StateFlags & DISPLAY_DEVICE_MODESPRUNED)
monitor->win32.modesPruned = GLFW_TRUE;
wcscpy(monitor->win32.adapterName, adapter->DeviceName);
WideCharToMultiByte(CP_UTF8, 0,
adapter->DeviceName, -1,
monitor->win32.publicAdapterName,
sizeof(monitor->win32.publicAdapterName),
NULL, NULL);
if (display)
{
wcscpy(monitor->win32.displayName, display->DeviceName);
WideCharToMultiByte(CP_UTF8, 0,
display->DeviceName, -1,
monitor->win32.publicDisplayName,
sizeof(monitor->win32.publicDisplayName),
NULL, NULL);
}
rect.left = dm.dmPosition.x;
rect.top = dm.dmPosition.y;
rect.right = dm.dmPosition.x + dm.dmPelsWidth;
rect.bottom = dm.dmPosition.y + dm.dmPelsHeight;
EnumDisplayMonitors(NULL, &rect, monitorCallback, (LPARAM) monitor);
return monitor;
}
//////////////////////////////////////////////////////////////////////////
////// GLFW internal API //////
//////////////////////////////////////////////////////////////////////////
// Poll for changes in the set of connected monitors
//
void _glfwPollMonitorsWin32(void)
{
int i, disconnectedCount;
_GLFWmonitor** disconnected = NULL;
DWORD adapterIndex, displayIndex;
DISPLAY_DEVICEW adapter, display;
_GLFWmonitor* monitor;
disconnectedCount = _glfw.monitorCount;
if (disconnectedCount)
{
disconnected = _glfw_calloc(_glfw.monitorCount, sizeof(_GLFWmonitor*));
memcpy(disconnected,
_glfw.monitors,
_glfw.monitorCount * sizeof(_GLFWmonitor*));
}
for (adapterIndex = 0; ; adapterIndex++)
{
int type = _GLFW_INSERT_LAST;
ZeroMemory(&adapter, sizeof(adapter));
adapter.cb = sizeof(adapter);
if (!EnumDisplayDevicesW(NULL, adapterIndex, &adapter, 0))
break;
if (!(adapter.StateFlags & DISPLAY_DEVICE_ACTIVE))
continue;
if (adapter.StateFlags & DISPLAY_DEVICE_PRIMARY_DEVICE)
type = _GLFW_INSERT_FIRST;
for (displayIndex = 0; ; displayIndex++)
{
ZeroMemory(&display, sizeof(display));
display.cb = sizeof(display);
if (!EnumDisplayDevicesW(adapter.DeviceName, displayIndex, &display, 0))
break;
if (!(display.StateFlags & DISPLAY_DEVICE_ACTIVE))
continue;
for (i = 0; i < disconnectedCount; i++)
{
if (disconnected[i] &&
wcscmp(disconnected[i]->win32.displayName,
display.DeviceName) == 0)
{
disconnected[i] = NULL;
// handle may have changed, update
EnumDisplayMonitors(NULL, NULL, monitorCallback, (LPARAM) _glfw.monitors[i]);
break;
}
}
if (i < disconnectedCount)
continue;
monitor = createMonitor(&adapter, &display);
if (!monitor)
{
_glfw_free(disconnected);
return;
}
_glfwInputMonitor(monitor, GLFW_CONNECTED, type);
type = _GLFW_INSERT_LAST;
}
// HACK: If an active adapter does not have any display devices
// (as sometimes happens), add it directly as a monitor
if (displayIndex == 0)
{
for (i = 0; i < disconnectedCount; i++)
{
if (disconnected[i] &&
wcscmp(disconnected[i]->win32.adapterName,
adapter.DeviceName) == 0)
{
disconnected[i] = NULL;
break;
}
}
if (i < disconnectedCount)
continue;
monitor = createMonitor(&adapter, NULL);
if (!monitor)
{
_glfw_free(disconnected);
return;
}
_glfwInputMonitor(monitor, GLFW_CONNECTED, type);
}
}
for (i = 0; i < disconnectedCount; i++)
{
if (disconnected[i])
_glfwInputMonitor(disconnected[i], GLFW_DISCONNECTED, 0);
}
_glfw_free(disconnected);
}
// Change the current video mode
//
void _glfwSetVideoModeWin32(_GLFWmonitor* monitor, const GLFWvidmode* desired)
{
GLFWvidmode current;
const GLFWvidmode* best;
DEVMODEW dm;
LONG result;
best = _glfwChooseVideoMode(monitor, desired);
_glfwGetVideoModeWin32(monitor, &current);
if (_glfwCompareVideoModes(&current, best) == 0)
return;
ZeroMemory(&dm, sizeof(dm));
dm.dmSize = sizeof(dm);
dm.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT | DM_BITSPERPEL |
DM_DISPLAYFREQUENCY;
dm.dmPelsWidth = best->width;
dm.dmPelsHeight = best->height;
dm.dmBitsPerPel = best->redBits + best->greenBits + best->blueBits;
dm.dmDisplayFrequency = best->refreshRate;
if (dm.dmBitsPerPel < 15 || dm.dmBitsPerPel >= 24)
dm.dmBitsPerPel = 32;
result = ChangeDisplaySettingsExW(monitor->win32.adapterName,
&dm,
NULL,
CDS_FULLSCREEN,
NULL);
if (result == DISP_CHANGE_SUCCESSFUL)
monitor->win32.modeChanged = GLFW_TRUE;
else
{
const char* description = "Unknown error";
if (result == DISP_CHANGE_BADDUALVIEW)
description = "The system uses DualView";
else if (result == DISP_CHANGE_BADFLAGS)
description = "Invalid flags";
else if (result == DISP_CHANGE_BADMODE)
description = "Graphics mode not supported";
else if (result == DISP_CHANGE_BADPARAM)
description = "Invalid parameter";
else if (result == DISP_CHANGE_FAILED)
description = "Graphics mode failed";
else if (result == DISP_CHANGE_NOTUPDATED)
description = "Failed to write to registry";
else if (result == DISP_CHANGE_RESTART)
description = "Computer restart required";
_glfwInputError(GLFW_PLATFORM_ERROR,
"Win32: Failed to set video mode: %s",
description);
}
}
// Restore the previously saved (original) video mode
//
void _glfwRestoreVideoModeWin32(_GLFWmonitor* monitor)
{
if (monitor->win32.modeChanged)
{
ChangeDisplaySettingsExW(monitor->win32.adapterName,
NULL, NULL, CDS_FULLSCREEN, NULL);
monitor->win32.modeChanged = GLFW_FALSE;
}
}
void _glfwGetHMONITORContentScaleWin32(HMONITOR handle, float* xscale, float* yscale)
{
UINT xdpi, ydpi;
if (xscale)
*xscale = 0.f;
if (yscale)
*yscale = 0.f;
if (IsWindows8Point1OrGreater())
{
if (GetDpiForMonitor(handle, MDT_EFFECTIVE_DPI, &xdpi, &ydpi) != S_OK)
{
_glfwInputError(GLFW_PLATFORM_ERROR, "Win32: Failed to query monitor DPI");
return;
}
}
else
{
const HDC dc = GetDC(NULL);
xdpi = GetDeviceCaps(dc, LOGPIXELSX);
ydpi = GetDeviceCaps(dc, LOGPIXELSY);
ReleaseDC(NULL, dc);
}
if (xscale)
*xscale = xdpi / (float) USER_DEFAULT_SCREEN_DPI;
if (yscale)
*yscale = ydpi / (float) USER_DEFAULT_SCREEN_DPI;
}
//////////////////////////////////////////////////////////////////////////
////// GLFW platform API //////
//////////////////////////////////////////////////////////////////////////
void _glfwFreeMonitorWin32(_GLFWmonitor* monitor)
{
}
void _glfwGetMonitorPosWin32(_GLFWmonitor* monitor, int* xpos, int* ypos)
{
DEVMODEW dm;
ZeroMemory(&dm, sizeof(dm));
dm.dmSize = sizeof(dm);
EnumDisplaySettingsExW(monitor->win32.adapterName,
ENUM_CURRENT_SETTINGS,
&dm,
EDS_ROTATEDMODE);
if (xpos)
*xpos = dm.dmPosition.x;
if (ypos)
*ypos = dm.dmPosition.y;
}
void _glfwGetMonitorContentScaleWin32(_GLFWmonitor* monitor,
float* xscale, float* yscale)
{
_glfwGetHMONITORContentScaleWin32(monitor->win32.handle, xscale, yscale);
}
void _glfwGetMonitorWorkareaWin32(_GLFWmonitor* monitor,
int* xpos, int* ypos,
int* width, int* height)
{
MONITORINFO mi = { sizeof(mi) };
GetMonitorInfoW(monitor->win32.handle, &mi);
if (xpos)
*xpos = mi.rcWork.left;
if (ypos)
*ypos = mi.rcWork.top;
if (width)
*width = mi.rcWork.right - mi.rcWork.left;
if (height)
*height = mi.rcWork.bottom - mi.rcWork.top;
}
GLFWvidmode* _glfwGetVideoModesWin32(_GLFWmonitor* monitor, int* count)
{
int modeIndex = 0, size = 0;
GLFWvidmode* result = NULL;
*count = 0;
for (;;)
{
int i;
GLFWvidmode mode;
DEVMODEW dm;
ZeroMemory(&dm, sizeof(dm));
dm.dmSize = sizeof(dm);
if (!EnumDisplaySettingsW(monitor->win32.adapterName, modeIndex, &dm))
break;
modeIndex++;
// Skip modes with less than 15 BPP
if (dm.dmBitsPerPel < 15)
continue;
mode.width = dm.dmPelsWidth;
mode.height = dm.dmPelsHeight;
mode.refreshRate = dm.dmDisplayFrequency;
_glfwSplitBPP(dm.dmBitsPerPel,
&mode.redBits,
&mode.greenBits,
&mode.blueBits);
for (i = 0; i < *count; i++)
{
if (_glfwCompareVideoModes(result + i, &mode) == 0)
break;
}
// Skip duplicate modes
if (i < *count)
continue;
if (monitor->win32.modesPruned)
{
// Skip modes not supported by the connected displays
if (ChangeDisplaySettingsExW(monitor->win32.adapterName,
&dm,
NULL,
CDS_TEST,
NULL) != DISP_CHANGE_SUCCESSFUL)
{
continue;
}
}
if (*count == size)
{
size += 128;
result = (GLFWvidmode*) _glfw_realloc(result, size * sizeof(GLFWvidmode));
}
(*count)++;
result[*count - 1] = mode;
}
if (!*count)
{
// HACK: Report the current mode if no valid modes were found
result = _glfw_calloc(1, sizeof(GLFWvidmode));
_glfwGetVideoModeWin32(monitor, result);
*count = 1;
}
return result;
}
void _glfwGetVideoModeWin32(_GLFWmonitor* monitor, GLFWvidmode* mode)
{
DEVMODEW dm;
ZeroMemory(&dm, sizeof(dm));
dm.dmSize = sizeof(dm);
EnumDisplaySettingsW(monitor->win32.adapterName, ENUM_CURRENT_SETTINGS, &dm);
mode->width = dm.dmPelsWidth;
mode->height = dm.dmPelsHeight;
mode->refreshRate = dm.dmDisplayFrequency;
_glfwSplitBPP(dm.dmBitsPerPel,
&mode->redBits,
&mode->greenBits,
&mode->blueBits);
}
GLFWbool _glfwGetGammaRampWin32(_GLFWmonitor* monitor, GLFWgammaramp* ramp)
{
HDC dc;
WORD values[3][256];
dc = CreateDCW(L"DISPLAY", monitor->win32.adapterName, NULL, NULL);
GetDeviceGammaRamp(dc, values);
DeleteDC(dc);
_glfwAllocGammaArrays(ramp, 256);
memcpy(ramp->red, values[0], sizeof(values[0]));
memcpy(ramp->green, values[1], sizeof(values[1]));
memcpy(ramp->blue, values[2], sizeof(values[2]));
return GLFW_TRUE;
}
void _glfwSetGammaRampWin32(_GLFWmonitor* monitor, const GLFWgammaramp* ramp)
{
HDC dc;
WORD values[3][256];
if (ramp->size != 256)
{
_glfwInputError(GLFW_PLATFORM_ERROR,
"Win32: Gamma ramp size must be 256");
return;
}
memcpy(values[0], ramp->red, sizeof(values[0]));
memcpy(values[1], ramp->green, sizeof(values[1]));
memcpy(values[2], ramp->blue, sizeof(values[2]));
dc = CreateDCW(L"DISPLAY", monitor->win32.adapterName, NULL, NULL);
SetDeviceGammaRamp(dc, values);
DeleteDC(dc);
}
//////////////////////////////////////////////////////////////////////////
////// GLFW native API //////
//////////////////////////////////////////////////////////////////////////
SSCAPI const char* glfwGetWin32Adapter(GLFWmonitor* handle)
{
_GLFWmonitor* monitor = (_GLFWmonitor*) handle;
_GLFW_REQUIRE_INIT_OR_RETURN(NULL);
return monitor->win32.publicAdapterName;
}
SSCAPI const char* glfwGetWin32Monitor(GLFWmonitor* handle)
{
_GLFWmonitor* monitor = (_GLFWmonitor*) handle;
_GLFW_REQUIRE_INIT_OR_RETURN(NULL);
return monitor->win32.publicDisplayName;
}
#endif // _GLFW_WIN32
@@ -0,0 +1,102 @@
//========================================================================
// GLFW 3.4 Win32 - www.glfw.org
//------------------------------------------------------------------------
// Copyright (c) 2002-2006 Marcus Geelnard
// Copyright (c) 2006-2017 Camilla Löwy <elmindreda@glfw.org>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would
// be appreciated but is not required.
//
// 2. Altered source versions must be plainly marked as such, and must not
// be misrepresented as being the original software.
//
// 3. This notice may not be removed or altered from any source
// distribution.
//
//========================================================================
// Please use C89 style variable declarations in this file because VS 2010
//========================================================================
#include "glfw_internal.h"
#if defined(GLFW_BUILD_WIN32_THREAD)
#include <assert.h>
//////////////////////////////////////////////////////////////////////////
////// GLFW platform API //////
//////////////////////////////////////////////////////////////////////////
GLFWbool _glfwPlatformCreateTls(_GLFWtls* tls)
{
assert(tls->win32.allocated == GLFW_FALSE);
tls->win32.index = TlsAlloc();
if (tls->win32.index == TLS_OUT_OF_INDEXES)
{
_glfwInputError(GLFW_PLATFORM_ERROR, "Win32: Failed to allocate TLS index");
return GLFW_FALSE;
}
tls->win32.allocated = GLFW_TRUE;
return GLFW_TRUE;
}
void _glfwPlatformDestroyTls(_GLFWtls* tls)
{
if (tls->win32.allocated)
TlsFree(tls->win32.index);
memset(tls, 0, sizeof(_GLFWtls));
}
void* _glfwPlatformGetTls(_GLFWtls* tls)
{
assert(tls->win32.allocated == GLFW_TRUE);
return TlsGetValue(tls->win32.index);
}
void _glfwPlatformSetTls(_GLFWtls* tls, void* value)
{
assert(tls->win32.allocated == GLFW_TRUE);
TlsSetValue(tls->win32.index, value);
}
GLFWbool _glfwPlatformCreateMutex(_GLFWmutex* mutex)
{
assert(mutex->win32.allocated == GLFW_FALSE);
InitializeCriticalSection(&mutex->win32.section);
return mutex->win32.allocated = GLFW_TRUE;
}
void _glfwPlatformDestroyMutex(_GLFWmutex* mutex)
{
if (mutex->win32.allocated)
DeleteCriticalSection(&mutex->win32.section);
memset(mutex, 0, sizeof(_GLFWmutex));
}
void _glfwPlatformLockMutex(_GLFWmutex* mutex)
{
assert(mutex->win32.allocated == GLFW_TRUE);
EnterCriticalSection(&mutex->win32.section);
}
void _glfwPlatformUnlockMutex(_GLFWmutex* mutex)
{
assert(mutex->win32.allocated == GLFW_TRUE);
LeaveCriticalSection(&mutex->win32.section);
}
#endif // GLFW_BUILD_WIN32_THREAD
@@ -0,0 +1,56 @@
//========================================================================
// GLFW 3.4 Win32 - www.glfw.org
//------------------------------------------------------------------------
// Copyright (c) 2002-2006 Marcus Geelnard
// Copyright (c) 2006-2017 Camilla Löwy <elmindreda@glfw.org>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would
// be appreciated but is not required.
//
// 2. Altered source versions must be plainly marked as such, and must not
// be misrepresented as being the original software.
//
// 3. This notice may not be removed or altered from any source
// distribution.
//
//========================================================================
// Please use C89 style variable declarations in this file because VS 2010
//========================================================================
#include "glfw_internal.h"
#if defined(GLFW_BUILD_WIN32_TIMER)
//////////////////////////////////////////////////////////////////////////
////// GLFW platform API //////
//////////////////////////////////////////////////////////////////////////
void _glfwPlatformInitTimer(void)
{
QueryPerformanceFrequency((LARGE_INTEGER*) &_glfw.timer.win32.frequency);
}
uint64_t _glfwPlatformGetTimerValue(void)
{
uint64_t value;
QueryPerformanceCounter((LARGE_INTEGER*) &value);
return value;
}
uint64_t _glfwPlatformGetTimerFrequency(void)
{
return _glfw.timer.win32.frequency;
}
#endif // GLFW_BUILD_WIN32_TIMER
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -1,6 +1,6 @@
#pragma once
#include "StgSharpGraphic.h"
#include "StgSharpC.h"
#include <stdio.h>
#include <stdalign.h>
@@ -18,7 +18,7 @@ Basic functions as a copy of SIMD intrisic function
*/
SSGC_API __m128* __cdecl set_m128ptr_default()
SSCAPI __m128* __cdecl set_m128ptr_default()
{
return defaultVecPtr;
}
+4 -4
View File
@@ -1,9 +1,9 @@
#include "StgSharpGraphic.h"
#include "StgSharpC.h"
SSGC_API _inline void __cdecl transpose2to3(matrix2map* source, matrix3map* target)
SSCAPI _inline void __cdecl transpose2to3(matrix2map* source, matrix3map* target)
{
__m128 t0 = _mm_shuffle_ps(ALIGN(source->m[0][0]), ALIGN(source->m[0][1]), _MM_SHUFFLE(1, 0, 1, 0));
__m128 t1 = _mm_shuffle_ps(ALIGN(source->m[0][0]), ALIGN(source->m[0][1]), _MM_SHUFFLE(3, 2, 3, 2));
@@ -13,7 +13,7 @@ SSGC_API _inline void __cdecl transpose2to3(matrix2map* source, matrix3map* targ
target->colum[2] = _mm_shuffle_ps(t1, *defaultVecPtr, _MM_SHUFFLE(2, 0, 2, 0));
}
SSGC_API _inline void __cdecl transpose2to4(matrix2map* source, matrix4map* target)
SSCAPI _inline void __cdecl transpose2to4(matrix2map* source, matrix4map* target)
{
__m128 t0 = _mm_shuffle_ps(ALIGN(source->m[0][0]), ALIGN(source->m[0][1]), _MM_SHUFFLE(1, 0, 1, 0));
__m128 t1 = _mm_shuffle_ps(ALIGN(source->m[0][0]), ALIGN(source->m[0][1]), _MM_SHUFFLE(3, 2, 3, 2));
@@ -24,7 +24,7 @@ SSGC_API _inline void __cdecl transpose2to4(matrix2map* source, matrix4map* targ
target->colum[3] = _mm_shuffle_ps(t1, *defaultVecPtr, _MM_SHUFFLE(3, 1, 3, 1));
}
SSGC_API _inline void __cdecl deinit_mat2(matrix2map* mat)
SSCAPI _inline void __cdecl deinit_mat2(matrix2map* mat)
{
_aligned_free(mat);
}
+6 -6
View File
@@ -1,9 +1,9 @@
#include "StgSharpGraphic.h"
#include "StgSharpC.h"
#include <stdio.h>
SSGC_API __inline void _cdecl transpose3to2(matrix3map* source, matrix2map* target)
SSCAPI __inline void _cdecl transpose3to2(matrix3map* source, matrix2map* target)
{
__m128 t0 = _mm_shuffle_ps(ALIGN(source->m[0][0]), ALIGN(source->m[0][1]), _MM_SHUFFLE(1, 0, 1, 0));
__m128 t2 = _mm_shuffle_ps(ALIGN(source->m[0][2]), *defaultVecPtr, _MM_SHUFFLE(1, 0, 1, 0));
@@ -12,7 +12,7 @@ SSGC_API __inline void _cdecl transpose3to2(matrix3map* source, matrix2map* targ
target->colum[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1));
}
SSGC_API __inline void _cdecl transpose3to3(matrix3map* source, matrix3map* target)
SSCAPI __inline void _cdecl transpose3to3(matrix3map* source, matrix3map* target)
{
__m128 t0 = _mm_shuffle_ps(ALIGN(source->m[0][0]), ALIGN(source->m[0][1]), _MM_SHUFFLE(1, 0, 1, 0));
__m128 t1 = _mm_shuffle_ps(ALIGN(source->m[0][0]), ALIGN(source->m[0][1]), _MM_SHUFFLE(3, 2, 3, 2));
@@ -25,7 +25,7 @@ SSGC_API __inline void _cdecl transpose3to3(matrix3map* source, matrix3map* targ
}
SSGC_API __inline void _cdecl transpose3to4(matrix3map* source, matrix4map* target)
SSCAPI __inline void _cdecl transpose3to4(matrix3map* source, matrix4map* target)
{
__m128 t0 = _mm_shuffle_ps(ALIGN(source->m[0][0]), ALIGN(source->m[0][1]), _MM_SHUFFLE(1, 0, 1, 0));
__m128 t1 = _mm_shuffle_ps(ALIGN(source->m[0][0]), ALIGN(source->m[0][1]), _MM_SHUFFLE(3, 2, 3, 2));
@@ -38,7 +38,7 @@ SSGC_API __inline void _cdecl transpose3to4(matrix3map* source, matrix4map* targ
target->colum[3] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(3, 1, 3, 1));
}
SSGC_API _inline float _cdecl det_mat3_internal(__m128 const c0, __m128 const c1, __m128 const c2)
SSCAPI _inline float _cdecl det_mat3_internal(__m128 const c0, __m128 const c1, __m128 const c2)
{
//let adding row aligned
@@ -67,7 +67,7 @@ SSGC_API _inline float _cdecl det_mat3_internal(__m128 const c0, __m128 const c1
return ret.m128_f32[2];
}
SSGC_API _inline float _cdecl det_mat3(matrix3map* mat)
SSCAPI _inline float _cdecl det_mat3(matrix3map* mat)
{
return det_mat3_internal(
mat->colum[0],
+6 -6
View File
@@ -1,11 +1,11 @@
#include "StgSharpGraphic.h"
#include "StgSharpC.h"
#include <stdio.h>
#include <pmmintrin.h>
SSGC_API __inline void __cdecl transpose4to2(matrix4map* source, matrix4map* target)
SSCAPI __inline void __cdecl transpose4to2(matrix4map* source, matrix4map* target)
{
__m128 t0 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(1, 0, 1, 0));
__m128 t2 = _mm_shuffle_ps(ALIGN(source->colum[2]), ALIGN(source->colum[3]), _MM_SHUFFLE(1, 0, 1, 0));
@@ -14,7 +14,7 @@ SSGC_API __inline void __cdecl transpose4to2(matrix4map* source, matrix4map* tar
target->colum[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1));
}
SSGC_API __inline void __cdecl transpose4to4(matrix4map* source, matrix4map* target)
SSCAPI __inline void __cdecl transpose4to4(matrix4map* source, matrix4map* target)
{
__m128 t0 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(1, 0, 1, 0));
__m128 t1 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(3, 2, 3, 2));
@@ -28,7 +28,7 @@ SSGC_API __inline void __cdecl transpose4to4(matrix4map* source, matrix4map* tar
}
SSGC_API __inline void __cdecl transpose4to3(matrix4map* source, matrix3map* target)
SSCAPI __inline void __cdecl transpose4to3(matrix4map* source, matrix3map* target)
{
__m128 t0 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(1, 0, 1, 0));
__m128 t1 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(3, 2, 3, 2));
@@ -43,7 +43,7 @@ SSGC_API __inline void __cdecl transpose4to3(matrix4map* source, matrix3map* tar
SSGC_API __inline float __cdecl det_mat4(matrix4map* matPtr, matrix4map* transpose)
SSCAPI __inline float __cdecl det_mat4(matrix4map* matPtr, matrix4map* transpose)
{
__m128 mc0 = ALIGN(matPtr->colum[0]);
__m128 mc1 = ALIGN(matPtr->colum[1]);
@@ -63,7 +63,7 @@ SSGC_API __inline float __cdecl det_mat4(matrix4map* matPtr, matrix4map* transpo
}
SSGC_API __inline void __cdecl deinit_mat4(matrix4map* matPtr)
SSCAPI __inline void __cdecl deinit_mat4(matrix4map* matPtr)
{
_aligned_free(matPtr);
}
@@ -1,6 +0,0 @@
#pragma once
/*
#include "GLAD/gl.h"
#include "glfw/glfw3.h"
#include "StgSharpGraphic.h"
*/
@@ -0,0 +1,253 @@
#ifndef SSG
#define SSG
#define SSG_Api
#ifdef _WIN32
#define _CRT_SECURE_NO_WARNINGS 1
#endif
#include "ssgc_framework.h"
#include "ssgc_internal.h"
#include "glad_gl.h"
#include "glad_wgl.h"
#include "glfw3.h"
#include <immintrin.h>
#pragma region debug
SSCAPI void printShaderCode(char* const* code);
#pragma endregion
#pragma region Internal
extern __m128* defaultVecPtr;
#define ALIGN(simdVec) _mm_loadu_ps(&simdVec)
extern GladGLContext* currentContext;
typedef struct glfwContext
{
int(SSCDECL* Init)(void);
void(SSCDECL* Terminate)(void);
void(SSCDECL* InitHint)(int hint, int value);
void(SSCDECL* GetVersion)(int* major, int* minor, int* rev);
char* (SSCDECL* GetVersionString)(void);
int(SSCDECL* GetError)(char** description);
GLFWerrorfun(SSCDECL* SetErrorCallback)(GLFWerrorfun callback);
GLFWmonitor** (SSCDECL* GetMonitors)(int* count);
GLFWmonitor* (SSCDECL* GetPrimaryMonitor)(void);
void(SSCDECL* GetMonitorPos)(GLFWmonitor* monitor, int* xpos, int* ypos);
void(SSCDECL* GetMonitorWorkarea)(GLFWmonitor* monitor, int* xpos, int* ypos, int* width, int* height);
void(SSCDECL* GetMonitorPhysicalSize)(GLFWmonitor* monitor, int* widthMM, int* heightMM);
void(SSCDECL* GetMonitorContentScale)(GLFWmonitor* monitor, float* xscale, float* yscale);
char* (SSCDECL* GetMonitorName)(GLFWmonitor* monitor);
void(SSCDECL* SetMonitorUserPointer)(GLFWmonitor* monitor, void* pointer);
void* (SSCDECL* GetMonitorUserPointer)(GLFWmonitor* monitor);
GLFWmonitorfun(SSCDECL* SetMonitorCallback)(GLFWmonitorfun callback);
GLFWvidmode* (SSCDECL* GetVideoModes)(GLFWmonitor* monitor, int* count);
GLFWvidmode* (SSCDECL* GetVideoMode)(GLFWmonitor* monitor);
void(SSCDECL* SetGamma)(GLFWmonitor* monitor, float gamma);
GLFWgammaramp* (SSCDECL* GetGammaRamp)(GLFWmonitor* monitor);
void(SSCDECL* SetGammaRamp)(GLFWmonitor* monitor, GLFWgammaramp* ramp);
void(SSCDECL* DefaultWindowHints)(void);
void(SSCDECL* WindowHint)(int hint, int value);
void(SSCDECL* WindowHintString)(int hint, char* value);
GLFWwindow* (SSCDECL* CreateWindowProc)(int width, int height, char* title, GLFWmonitor* monitor, GLFWwindow* share);
void(SSCDECL* DestroyWindow)(GLFWwindow* window);
int(SSCDECL* WindowShouldClose)(GLFWwindow* window);
void(SSCDECL* SetWindowShouldClose)(GLFWwindow* window, int value);
void(SSCDECL* SetWindowTitle)(GLFWwindow* window, char* title);
void(SSCDECL* SetWindowIcon)(GLFWwindow* window, int count, GLFWimage* images);
void(SSCDECL* GetWindowPos)(GLFWwindow* window, int* xpos, int* ypos);
void(SSCDECL* SetWindowPos)(GLFWwindow* window, int xpos, int ypos);
void(SSCDECL* GetWindowSize)(GLFWwindow* window, int* width, int* height);
void(SSCDECL* SetWindowSizeLimits)(GLFWwindow* window, int minwidth, int minheight, int maxwidth, int maxheight);
void(SSCDECL* SetWindowAspectRatio)(GLFWwindow* window, int numer, int denom);
void(SSCDECL* SetWindowSize)(GLFWwindow* window, int width, int height);
void(SSCDECL* GetFramebufferSize)(GLFWwindow* window, int* width, int* height);
void(SSCDECL* GetWindowFrameSize)(GLFWwindow* window, int* left, int* top, int* right, int* bottom);
void(SSCDECL* GetWindowContentScale)(GLFWwindow* window, float* xscale, float* yscale);
float(SSCDECL* GetWindowOpacity)(GLFWwindow* window);
void(SSCDECL* SetWindowOpacity)(GLFWwindow* window, float opacity);
void(SSCDECL* IconifyWindow)(GLFWwindow* window);
void(SSCDECL* RestoreWindow)(GLFWwindow* window);
void(SSCDECL* MaximizeWindow)(GLFWwindow* window);
void(SSCDECL* ShowWindow)(GLFWwindow* window);
void(SSCDECL* HideWindow)(GLFWwindow* window);
void(SSCDECL* FocusWindow)(GLFWwindow* window);
void(SSCDECL* RequestWindowAttention)(GLFWwindow* window);
GLFWmonitor* (SSCDECL* GetWindowMonitor)(GLFWwindow* window);
void(SSCDECL* SetWindowMonitor)(GLFWwindow* window, GLFWmonitor* monitor, int xpos, int ypos, int width, int height, int refreshRate);
int(SSCDECL* GetWindowAttrib)(GLFWwindow* window, int attrib);
void(SSCDECL* SetWindowAttrib)(GLFWwindow* window, int attrib, int value);
void(SSCDECL* SetWindowUserPointer)(GLFWwindow* window, void* pointer);
void* (SSCDECL* GetWindowUserPointer)(GLFWwindow* window);
GLFWwindowposfun(SSCDECL* SetWindowPosCallback)(GLFWwindow* window, GLFWwindowposfun callback);
GLFWwindowsizefun(SSCDECL* SetWindowSizeCallback)(GLFWwindow* window, GLFWwindowsizefun callback);
GLFWwindowclosefun(SSCDECL* SetWindowCloseCallback)(GLFWwindow* window, GLFWwindowclosefun callback);
GLFWwindowrefreshfun(SSCDECL* SetWindowRefreshCallback)(GLFWwindow* window, GLFWwindowrefreshfun callback);
GLFWwindowfocusfun(SSCDECL* SetWindowFocusCallback)(GLFWwindow* window, GLFWwindowfocusfun callback);
GLFWwindowiconifyfun(SSCDECL* SetWindowIconifyCallback)(GLFWwindow* window, GLFWwindowiconifyfun callback);
GLFWwindowmaximizefun(SSCDECL* SetWindowMaximizeCallback)(GLFWwindow* window, GLFWwindowmaximizefun callback);
GLFWframebuffersizefun(SSCDECL* SetFramebufferSizeCallback)(GLFWwindow* window, GLFWframebuffersizefun callback);
GLFWwindowcontentscalefun(SSCDECL* SetWindowContentScaleCallback)(GLFWwindow* window, GLFWwindowcontentscalefun callback);
void(SSCDECL* PollEvents)(void);
void(SSCDECL* WaitEvents)(void);
void(SSCDECL* WaitEventsTimeout)(double timeout);
void(SSCDECL* PostEmptyEvent)(void);
int(SSCDECL* GetInputMode)(GLFWwindow* window, int mode);
void(SSCDECL* SetInputMode)(GLFWwindow* window, int mode, int value);
int(SSCDECL* RawMouseMotionSupported)(void);
char* (SSCDECL* GetKeyName)(int key, int scancode);
int(SSCDECL* GetKeyScancode)(int key);
int(SSCDECL* GetKey)(GLFWwindow* window, int key);
int(SSCDECL* GetMouseButton)(GLFWwindow* window, int button);
void(SSCDECL* GetCursorPos)(GLFWwindow* window, double* xpos, double* ypos);
void(SSCDECL* SetCursorPos)(GLFWwindow* window, double xpos, double ypos);
GLFWcursor* (SSCDECL* CreateCursor)(GLFWimage* image, int xhot, int yhot);
GLFWcursor* (SSCDECL* CreateStandardCursor)(int shape);
void(SSCDECL* DestroyCursor)(GLFWcursor* cursor);
void(SSCDECL* SetCursor)(GLFWwindow* window, GLFWcursor* cursor);
GLFWkeyfun(SSCDECL* SetKeyCallback)(GLFWwindow* window, GLFWkeyfun callback);
GLFWcharfun(SSCDECL* SetCharCallback)(GLFWwindow* window, GLFWcharfun callback);
GLFWcharmodsfun(SSCDECL* SetCharModsCallback)(GLFWwindow* window, GLFWcharmodsfun callback);
GLFWmousebuttonfun(SSCDECL* SetMouseButtonCallback)(GLFWwindow* window, GLFWmousebuttonfun callback);
GLFWcursorposfun(SSCDECL* SetCursorPosCallback)(GLFWwindow* window, GLFWcursorposfun callback);
GLFWcursorenterfun(SSCDECL* SetCursorEnterCallback)(GLFWwindow* window, GLFWcursorenterfun callback);
GLFWscrollfun(SSCDECL* SetScrollCallback)(GLFWwindow* window, GLFWscrollfun callback);
GLFWdropfun(SSCDECL* SetDropCallback)(GLFWwindow* window, GLFWdropfun callback);
int(SSCDECL* JoystickPresent)(int jid);
float* (SSCDECL* GetJoystickAxes)(int jid, int* count);
unsigned char* (SSCDECL* GetJoystickButtons)(int jid, int* count);
unsigned char* (SSCDECL* GetJoystickHats)(int jid, int* count);
char* (SSCDECL* GetJoystickName)(int jid);
char* (SSCDECL* GetJoystickGUID)(int jid);
void(SSCDECL* SetJoystickUserPointer)(int jid, void* pointer);
void* (SSCDECL* GetJoystickUserPointer)(int jid);
int(SSCDECL* JoystickIsGamepad)(int jid);
GLFWjoystickfun(SSCDECL* SetJoystickCallback)(GLFWjoystickfun callback);
int(SSCDECL* UpdateGamepadMappings)(char* string);
char* (SSCDECL* GetGamepadName)(int jid);
int(SSCDECL* GetGamepadState)(int jid, GLFWgamepadstate* state);
void(SSCDECL* SetClipboardString)(GLFWwindow* window, char* string);
char* (SSCDECL* GetClipboardString)(GLFWwindow* window);
double(SSCDECL* GetTime)(void);
void(SSCDECL* SetTime)(double time);
uint64_t* (SSCDECL* GetTimerValue)(void);
uint64_t* (SSCDECL* GetTimerFrequency)(void);
void(SSCDECL* MakeContextCurrent)(GLFWwindow* window);
GLFWwindow* (SSCDECL* GetCurrentContext)(void);
void(SSCDECL* SwapBuffers)(GLFWwindow* window);
void(SSCDECL* SwapInterval)(int interval);
int(SSCDECL* ExtensionSupported)(char* extension);
GLFWglproc(SSCDECL* GetProcAddress)(char* procname);
int(SSCDECL* VulkanSupported)(void);
char** (SSCDECL* GetRequiredInstanceExtensions)(uint32_t* count);
#if defined(VK_VERSION_1_0)
GLFWvkproc(SSCDECL* GetInstanceProcAddress)(VkInstance instance, char* procname);
int(SSCDECL* GetPhysicalDevicePresentationSupport)(VkInstance instance, VkPhysicalDevice device, uint32_t* queuefamily);
VkResult(SSCDECL* CreateWindowSurface)(VkInstance instance, GLFWwindow* window, VkAllocationCallbacks* allocator, VkSurfaceKHR* surface);
#endif
}glfwContext;
extern glfwContext* glfw;
#pragma endregion
SSCAPI char* infolog[512];
SSCAPI void _cdecl initGL(int majorVersion, int minorVersion);
SSCAPI int _cdecl initGLAD(void);
SSCAPI unsigned int _cdecl loadShaderCode(char* const shaderCode, GLint shadertype);
SSCAPI unsigned int _cdecl linkShaderProgram(GLuint shadertype);
SSCAPI char* _cdecl readLog(void);
//linear related function
SSCAPI __m128* __cdecl set_m128ptr_default();
#pragma region mat define
typedef union matrix2map
{
__m128 colum[2];
float m[4][2];
}matrix2map;
typedef struct matrix3map
{
__m128 colum[3];
float m[4][3];
}matrix3map;
typedef union matrix4map {
__m128 colum[4];
float m[4][4];
}matrix4map;
#pragma endregion
#pragma region mat2
SSCAPI _inline void __cdecl transpose2to3(matrix2map* source, matrix3map* target);
SSCAPI _inline void __cdecl transpose2to4(matrix2map* source, matrix4map* target);
SSCAPI _inline void __cdecl deinit_mat2(matrix2map* mat);
#pragma endregion
#pragma region mat3
SSCAPI __inline void _cdecl transpose3to2(matrix3map* source, matrix2map* target);
SSCAPI __inline void _cdecl transpose3to3(matrix3map* source, matrix3map* target);
SSCAPI __inline void _cdecl transpose3to4(matrix3map* source, matrix4map* target);
SSCAPI _inline float _cdecl det_mat3(matrix3map* mat);
SSCAPI __inline float det_mat3_internal(__m128 const c1, __m128 const c2, __m128 const c3);
#pragma endregion
#pragma region mat4
//type and function for 4 colum matrix
SSCAPI __inline void __cdecl transpose4to2(matrix4map* source, matrix4map* target);
SSCAPI __inline void __cdecl transpose4to4(matrix4map* matrix, matrix4map* target);
SSCAPI __inline float __cdecl det_mat4(matrix4map* matPtr, matrix4map* transpose);
SSCAPI __inline void __cdecl deinit_mat4(matrix4map* matPtr);
#pragma endregion
#endif // !SSG
@@ -1,255 +0,0 @@
#ifndef SSG
#define SSG
#define SSG_Api
#ifdef SSG_Api
#define SSGC_API __declspec(dllexport)
#define ssgcDecl _cdecl
#else
#define SSGC_API __declspec(dllimport)
#endif
#include "framework.h"
#include "GLAD/gl.h"
#include "glad/wgl.h"
#include "glfw/glfw3.h"
#include <immintrin.h>
#pragma comment(lib, "glfw3.lib")
#pragma region debug
SSGC_API void printShaderCode(char* const* code);
#pragma endregion
#pragma region Internal
extern __m128* defaultVecPtr;
#define ALIGN(simdVec) _mm_loadu_ps(&simdVec)
extern GladGLContext* currentContext;
typedef struct glfwContext
{
int(ssgcDecl* Init)(void);
void(ssgcDecl* Terminate)(void);
void(ssgcDecl* InitHint)(int hint, int value);
void(ssgcDecl* GetVersion)(int* major, int* minor, int* rev);
char* (ssgcDecl* GetVersionString)(void);
int(ssgcDecl* GetError)(char** description);
GLFWerrorfun(ssgcDecl* SetErrorCallback)(GLFWerrorfun callback);
GLFWmonitor** (ssgcDecl* GetMonitors)(int* count);
GLFWmonitor* (ssgcDecl* GetPrimaryMonitor)(void);
void(ssgcDecl* GetMonitorPos)(GLFWmonitor* monitor, int* xpos, int* ypos);
void(ssgcDecl* GetMonitorWorkarea)(GLFWmonitor* monitor, int* xpos, int* ypos, int* width, int* height);
void(ssgcDecl* GetMonitorPhysicalSize)(GLFWmonitor* monitor, int* widthMM, int* heightMM);
void(ssgcDecl* GetMonitorContentScale)(GLFWmonitor* monitor, float* xscale, float* yscale);
char* (ssgcDecl* GetMonitorName)(GLFWmonitor* monitor);
void(ssgcDecl* SetMonitorUserPointer)(GLFWmonitor* monitor, void* pointer);
void* (ssgcDecl* GetMonitorUserPointer)(GLFWmonitor* monitor);
GLFWmonitorfun(ssgcDecl* SetMonitorCallback)(GLFWmonitorfun callback);
GLFWvidmode* (ssgcDecl* GetVideoModes)(GLFWmonitor* monitor, int* count);
GLFWvidmode* (ssgcDecl* GetVideoMode)(GLFWmonitor* monitor);
void(ssgcDecl* SetGamma)(GLFWmonitor* monitor, float gamma);
GLFWgammaramp* (ssgcDecl* GetGammaRamp)(GLFWmonitor* monitor);
void(ssgcDecl* SetGammaRamp)(GLFWmonitor* monitor, GLFWgammaramp* ramp);
void(ssgcDecl* DefaultWindowHints)(void);
void(ssgcDecl* WindowHint)(int hint, int value);
void(ssgcDecl* WindowHintString)(int hint, char* value);
GLFWwindow* (ssgcDecl* CreateWindowProc)(int width, int height, char* title, GLFWmonitor* monitor, GLFWwindow* share);
void(ssgcDecl* DestroyWindow)(GLFWwindow* window);
int(ssgcDecl* WindowShouldClose)(GLFWwindow* window);
void(ssgcDecl* SetWindowShouldClose)(GLFWwindow* window, int value);
void(ssgcDecl* SetWindowTitle)(GLFWwindow* window, char* title);
void(ssgcDecl* SetWindowIcon)(GLFWwindow* window, int count, GLFWimage* images);
void(ssgcDecl* GetWindowPos)(GLFWwindow* window, int* xpos, int* ypos);
void(ssgcDecl* SetWindowPos)(GLFWwindow* window, int xpos, int ypos);
void(ssgcDecl* GetWindowSize)(GLFWwindow* window, int* width, int* height);
void(ssgcDecl* SetWindowSizeLimits)(GLFWwindow* window, int minwidth, int minheight, int maxwidth, int maxheight);
void(ssgcDecl* SetWindowAspectRatio)(GLFWwindow* window, int numer, int denom);
void(ssgcDecl* SetWindowSize)(GLFWwindow* window, int width, int height);
void(ssgcDecl* GetFramebufferSize)(GLFWwindow* window, int* width, int* height);
void(ssgcDecl* GetWindowFrameSize)(GLFWwindow* window, int* left, int* top, int* right, int* bottom);
void(ssgcDecl* GetWindowContentScale)(GLFWwindow* window, float* xscale, float* yscale);
float(ssgcDecl* GetWindowOpacity)(GLFWwindow* window);
void(ssgcDecl* SetWindowOpacity)(GLFWwindow* window, float opacity);
void(ssgcDecl* IconifyWindow)(GLFWwindow* window);
void(ssgcDecl* RestoreWindow)(GLFWwindow* window);
void(ssgcDecl* MaximizeWindow)(GLFWwindow* window);
void(ssgcDecl* ShowWindow)(GLFWwindow* window);
void(ssgcDecl* HideWindow)(GLFWwindow* window);
void(ssgcDecl* FocusWindow)(GLFWwindow* window);
void(ssgcDecl* RequestWindowAttention)(GLFWwindow* window);
GLFWmonitor* (ssgcDecl* GetWindowMonitor)(GLFWwindow* window);
void(ssgcDecl* SetWindowMonitor)(GLFWwindow* window, GLFWmonitor* monitor, int xpos, int ypos, int width, int height, int refreshRate);
int(ssgcDecl* GetWindowAttrib)(GLFWwindow* window, int attrib);
void(ssgcDecl* SetWindowAttrib)(GLFWwindow* window, int attrib, int value);
void(ssgcDecl* SetWindowUserPointer)(GLFWwindow* window, void* pointer);
void* (ssgcDecl* GetWindowUserPointer)(GLFWwindow* window);
GLFWwindowposfun(ssgcDecl* SetWindowPosCallback)(GLFWwindow* window, GLFWwindowposfun callback);
GLFWwindowsizefun(ssgcDecl* SetWindowSizeCallback)(GLFWwindow* window, GLFWwindowsizefun callback);
GLFWwindowclosefun(ssgcDecl* SetWindowCloseCallback)(GLFWwindow* window, GLFWwindowclosefun callback);
GLFWwindowrefreshfun(ssgcDecl* SetWindowRefreshCallback)(GLFWwindow* window, GLFWwindowrefreshfun callback);
GLFWwindowfocusfun(ssgcDecl* SetWindowFocusCallback)(GLFWwindow* window, GLFWwindowfocusfun callback);
GLFWwindowiconifyfun(ssgcDecl* SetWindowIconifyCallback)(GLFWwindow* window, GLFWwindowiconifyfun callback);
GLFWwindowmaximizefun(ssgcDecl* SetWindowMaximizeCallback)(GLFWwindow* window, GLFWwindowmaximizefun callback);
GLFWframebuffersizefun(ssgcDecl* SetFramebufferSizeCallback)(GLFWwindow* window, GLFWframebuffersizefun callback);
GLFWwindowcontentscalefun(ssgcDecl* SetWindowContentScaleCallback)(GLFWwindow* window, GLFWwindowcontentscalefun callback);
void(ssgcDecl* PollEvents)(void);
void(ssgcDecl* WaitEvents)(void);
void(ssgcDecl* WaitEventsTimeout)(double timeout);
void(ssgcDecl* PostEmptyEvent)(void);
int(ssgcDecl* GetInputMode)(GLFWwindow* window, int mode);
void(ssgcDecl* SetInputMode)(GLFWwindow* window, int mode, int value);
int(ssgcDecl* RawMouseMotionSupported)(void);
char* (ssgcDecl* GetKeyName)(int key, int scancode);
int(ssgcDecl* GetKeyScancode)(int key);
int(ssgcDecl* GetKey)(GLFWwindow* window, int key);
int(ssgcDecl* GetMouseButton)(GLFWwindow* window, int button);
void(ssgcDecl* GetCursorPos)(GLFWwindow* window, double* xpos, double* ypos);
void(ssgcDecl* SetCursorPos)(GLFWwindow* window, double xpos, double ypos);
GLFWcursor* (ssgcDecl* CreateCursor)(GLFWimage* image, int xhot, int yhot);
GLFWcursor* (ssgcDecl* CreateStandardCursor)(int shape);
void(ssgcDecl* DestroyCursor)(GLFWcursor* cursor);
void(ssgcDecl* SetCursor)(GLFWwindow* window, GLFWcursor* cursor);
GLFWkeyfun(ssgcDecl* SetKeyCallback)(GLFWwindow* window, GLFWkeyfun callback);
GLFWcharfun(ssgcDecl* SetCharCallback)(GLFWwindow* window, GLFWcharfun callback);
GLFWcharmodsfun(ssgcDecl* SetCharModsCallback)(GLFWwindow* window, GLFWcharmodsfun callback);
GLFWmousebuttonfun(ssgcDecl* SetMouseButtonCallback)(GLFWwindow* window, GLFWmousebuttonfun callback);
GLFWcursorposfun(ssgcDecl* SetCursorPosCallback)(GLFWwindow* window, GLFWcursorposfun callback);
GLFWcursorenterfun(ssgcDecl* SetCursorEnterCallback)(GLFWwindow* window, GLFWcursorenterfun callback);
GLFWscrollfun(ssgcDecl* SetScrollCallback)(GLFWwindow* window, GLFWscrollfun callback);
GLFWdropfun(ssgcDecl* SetDropCallback)(GLFWwindow* window, GLFWdropfun callback);
int(ssgcDecl* JoystickPresent)(int jid);
float* (ssgcDecl* GetJoystickAxes)(int jid, int* count);
unsigned char* (ssgcDecl* GetJoystickButtons)(int jid, int* count);
unsigned char* (ssgcDecl* GetJoystickHats)(int jid, int* count);
char* (ssgcDecl* GetJoystickName)(int jid);
char* (ssgcDecl* GetJoystickGUID)(int jid);
void(ssgcDecl* SetJoystickUserPointer)(int jid, void* pointer);
void* (ssgcDecl* GetJoystickUserPointer)(int jid);
int(ssgcDecl* JoystickIsGamepad)(int jid);
GLFWjoystickfun(ssgcDecl* SetJoystickCallback)(GLFWjoystickfun callback);
int(ssgcDecl* UpdateGamepadMappings)(char* string);
char* (ssgcDecl* GetGamepadName)(int jid);
int(ssgcDecl* GetGamepadState)(int jid, GLFWgamepadstate* state);
void(ssgcDecl* SetClipboardString)(GLFWwindow* window, char* string);
char* (ssgcDecl* GetClipboardString)(GLFWwindow* window);
double(ssgcDecl* GetTime)(void);
void(ssgcDecl* SetTime)(double time);
uint64_t* (ssgcDecl* GetTimerValue)(void);
uint64_t* (ssgcDecl* GetTimerFrequency)(void);
void(ssgcDecl* MakeContextCurrent)(GLFWwindow* window);
GLFWwindow* (ssgcDecl* GetCurrentContext)(void);
void(ssgcDecl* SwapBuffers)(GLFWwindow* window);
void(ssgcDecl* SwapInterval)(int interval);
int(ssgcDecl* ExtensionSupported)(char* extension);
GLFWglproc(ssgcDecl* GetProcAddress)(char* procname);
int(ssgcDecl* VulkanSupported)(void);
char** (ssgcDecl* GetRequiredInstanceExtensions)(uint32_t* count);
#if defined(VK_VERSION_1_0)
GLFWvkproc(ssgcDecl* GetInstanceProcAddress)(VkInstance instance, char* procname);
int(ssgcDecl* GetPhysicalDevicePresentationSupport)(VkInstance instance, VkPhysicalDevice device, uint32_t* queuefamily);
VkResult(ssgcDecl* CreateWindowSurface)(VkInstance instance, GLFWwindow* window, VkAllocationCallbacks* allocator, VkSurfaceKHR* surface);
#endif
}glfwContext;
extern glfwContext* glfw;
#pragma endregion
SSGC_API char* infolog[512];
SSGC_API glfwContext* _cdecl initGL(int majorVersion, int minorVersion, glfwContext* ptr);
SSGC_API int _cdecl initGLAD(void);
SSGC_API unsigned int _cdecl loadShaderCode(char* const shaderCode, GLint shadertype);
SSGC_API unsigned int _cdecl linkShaderProgram(GLuint shadertype);
SSGC_API void _cdecl setCurrentGLcontext(GladGLContext* contextPtr);
SSGC_API char* _cdecl readLog(void);
//linear related function
SSGC_API __m128* __cdecl set_m128ptr_default();
#pragma region mat define
typedef union matrix2map
{
__m128 colum[2];
float m[4][2];
}matrix2map;
typedef struct matrix3map
{
__m128 colum[3];
float m[4][3];
}matrix3map;
typedef union matrix4map {
__m128 colum[4];
float m[4][4];
}matrix4map;
#pragma endregion
#pragma region mat2
SSGC_API _inline void __cdecl transpose2to3(matrix2map* source, matrix3map* target);
SSGC_API _inline void __cdecl transpose2to4(matrix2map* source, matrix4map* target);
SSGC_API _inline void __cdecl deinit_mat2(matrix2map* mat);
#pragma endregion
#pragma region mat3
SSGC_API __inline void _cdecl transpose3to2(matrix3map* source, matrix2map* target);
SSGC_API __inline void _cdecl transpose3to3(matrix3map* source, matrix3map* target);
SSGC_API __inline void _cdecl transpose3to4(matrix3map* source, matrix4map* target);
SSGC_API _inline float _cdecl det_mat3(matrix3map* mat);
SSGC_API __inline float det_mat3_internal(__m128 const c1, __m128 const c2, __m128 const c3);
#pragma endregion
#pragma region mat4
//type and function for 4 colum matrix
SSGC_API __inline void __cdecl transpose4to2(matrix4map* source, matrix4map* target);
SSGC_API __inline void __cdecl transpose4to4(matrix4map* matrix, matrix4map* target);
SSGC_API __inline float __cdecl det_mat4(matrix4map* matPtr, matrix4map* transpose);
SSGC_API __inline void __cdecl deinit_mat4(matrix4map* matPtr);
#pragma endregion
#endif // !SSG
@@ -1,779 +0,0 @@
/**
* Loader generated by glad 2.0.4 on Thu Oct 26 14:05:44 2023
*
* SPDX-License-Identifier: (WTFPL OR CC0-1.0) AND Apache-2.0
*
* Generator: C/C++
* Specification: gl
* Extensions: 7
*
* APIs:
* - glsc2=2.0
*
* Options:
* - ALIAS = False
* - DEBUG = False
* - HEADER_ONLY = False
* - LOADER = True
* - MX = True
* - ON_DEMAND = False
*
* Commandline:
* --api='glsc2=2.0' --extensions='GL_EXT_texture_compression_s3tc,GL_IMG_pvric_end_to_end_signature,GL_IMG_tile_region_protection,GL_OES_depth24,GL_OES_depth32,GL_OES_rgb8_rgba8,GL_OES_standard_derivatives' c --loader --mx
*
* Online:
* http://glad.sh/#api=glsc2%3D2.0&extensions=GL_EXT_texture_compression_s3tc%2CGL_IMG_pvric_end_to_end_signature%2CGL_IMG_tile_region_protection%2CGL_OES_depth24%2CGL_OES_depth32%2CGL_OES_rgb8_rgba8%2CGL_OES_standard_derivatives&generator=c&options=LOADER%2CMX
*
*/
#ifndef GLAD_GLSC2_H_
#define GLAD_GLSC2_H_
#ifdef __clang__
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wreserved-id-macro"
#endif
#ifdef __clang__
#pragma clang diagnostic pop
#endif
#define GLAD_GLSC2
#define GLAD_OPTION_GLSC2_LOADER
#define GLAD_OPTION_GLSC2_MX
#ifdef __cplusplus
extern "C" {
#endif
#ifndef GLAD_PLATFORM_H_
#define GLAD_PLATFORM_H_
#ifndef GLAD_PLATFORM_WIN32
#if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__MINGW32__)
#define GLAD_PLATFORM_WIN32 1
#else
#define GLAD_PLATFORM_WIN32 0
#endif
#endif
#ifndef GLAD_PLATFORM_APPLE
#ifdef __APPLE__
#define GLAD_PLATFORM_APPLE 1
#else
#define GLAD_PLATFORM_APPLE 0
#endif
#endif
#ifndef GLAD_PLATFORM_EMSCRIPTEN
#ifdef __EMSCRIPTEN__
#define GLAD_PLATFORM_EMSCRIPTEN 1
#else
#define GLAD_PLATFORM_EMSCRIPTEN 0
#endif
#endif
#ifndef GLAD_PLATFORM_UWP
#if defined(_MSC_VER) && !defined(GLAD_INTERNAL_HAVE_WINAPIFAMILY)
#ifdef __has_include
#if __has_include(<winapifamily.h>)
#define GLAD_INTERNAL_HAVE_WINAPIFAMILY 1
#endif
#elif _MSC_VER >= 1700 && !_USING_V110_SDK71_
#define GLAD_INTERNAL_HAVE_WINAPIFAMILY 1
#endif
#endif
#ifdef GLAD_INTERNAL_HAVE_WINAPIFAMILY
#include <winapifamily.h>
#if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
#define GLAD_PLATFORM_UWP 1
#endif
#endif
#ifndef GLAD_PLATFORM_UWP
#define GLAD_PLATFORM_UWP 0
#endif
#endif
#ifdef __GNUC__
#define GLAD_GNUC_EXTENSION __extension__
#else
#define GLAD_GNUC_EXTENSION
#endif
#define GLAD_UNUSED(x) (void)(x)
#ifndef GLAD_API_CALL
#if defined(GLAD_API_CALL_EXPORT)
#if GLAD_PLATFORM_WIN32 || defined(__CYGWIN__)
#if defined(GLAD_API_CALL_EXPORT_BUILD)
#if defined(__GNUC__)
#define GLAD_API_CALL __attribute__ ((dllexport)) extern
#else
#define GLAD_API_CALL __declspec(dllexport) extern
#endif
#else
#if defined(__GNUC__)
#define GLAD_API_CALL __attribute__ ((dllimport)) extern
#else
#define GLAD_API_CALL __declspec(dllimport) extern
#endif
#endif
#elif defined(__GNUC__) && defined(GLAD_API_CALL_EXPORT_BUILD)
#define GLAD_API_CALL __attribute__ ((visibility ("default"))) extern
#else
#define GLAD_API_CALL extern
#endif
#else
#define GLAD_API_CALL extern
#endif
#endif
#ifdef APIENTRY
#define GLAD_API_PTR APIENTRY
#elif GLAD_PLATFORM_WIN32
#define GLAD_API_PTR __stdcall
#else
#define GLAD_API_PTR
#endif
#ifndef GLAPI
#define GLAPI GLAD_API_CALL
#endif
#ifndef GLAPIENTRY
#define GLAPIENTRY GLAD_API_PTR
#endif
#define GLAD_MAKE_VERSION(major, minor) (major * 10000 + minor)
#define GLAD_VERSION_MAJOR(version) (version / 10000)
#define GLAD_VERSION_MINOR(version) (version % 10000)
#define GLAD_GENERATOR_VERSION "2.0.4"
typedef void (*GLADapiproc)(void);
typedef GLADapiproc (*GLADloadfunc)(const char *name);
typedef GLADapiproc (*GLADuserptrloadfunc)(void *userptr, const char *name);
typedef void (*GLADprecallback)(const char *name, GLADapiproc apiproc, int len_args, ...);
typedef void (*GLADpostcallback)(void *ret, const char *name, GLADapiproc apiproc, int len_args, ...);
#endif /* GLAD_PLATFORM_H_ */
#define GL_ACTIVE_TEXTURE 0x84E0
#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E
#define GL_ALIASED_POINT_SIZE_RANGE 0x846D
#define GL_ALPHA_BITS 0x0D55
#define GL_ALWAYS 0x0207
#define GL_ARRAY_BUFFER 0x8892
#define GL_ARRAY_BUFFER_BINDING 0x8894
#define GL_BACK 0x0405
#define GL_BLEND 0x0BE2
#define GL_BLEND_COLOR 0x8005
#define GL_BLEND_DST_ALPHA 0x80CA
#define GL_BLEND_DST_RGB 0x80C8
#define GL_BLEND_EQUATION 0x8009
#define GL_BLEND_EQUATION_ALPHA 0x883D
#define GL_BLEND_EQUATION_RGB 0x8009
#define GL_BLEND_SRC_ALPHA 0x80CB
#define GL_BLEND_SRC_RGB 0x80C9
#define GL_BLUE_BITS 0x0D54
#define GL_BUFFER_SIZE 0x8764
#define GL_BUFFER_USAGE 0x8765
#define GL_BYTE 0x1400
#define GL_CCW 0x0901
#define GL_CLAMP_TO_EDGE 0x812F
#define GL_COLOR_ATTACHMENT0 0x8CE0
#define GL_COLOR_BUFFER_BIT 0x00004000
#define GL_COLOR_CLEAR_VALUE 0x0C22
#define GL_COLOR_WRITEMASK 0x0C23
#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1
#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2
#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3
#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0
#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3
#define GL_CONSTANT_ALPHA 0x8003
#define GL_CONSTANT_COLOR 0x8001
#define GL_CONTEXT_LOST 0x0507
#define GL_CONTEXT_ROBUST_ACCESS 0x90F3
#define GL_CULL_FACE 0x0B44
#define GL_CULL_FACE_MODE 0x0B45
#define GL_CURRENT_PROGRAM 0x8B8D
#define GL_CURRENT_VERTEX_ATTRIB 0x8626
#define GL_CW 0x0900
#define GL_DECR 0x1E03
#define GL_DECR_WRAP 0x8508
#define GL_DEPTH_ATTACHMENT 0x8D00
#define GL_DEPTH_BITS 0x0D56
#define GL_DEPTH_BUFFER_BIT 0x00000100
#define GL_DEPTH_CLEAR_VALUE 0x0B73
#define GL_DEPTH_COMPONENT16 0x81A5
#define GL_DEPTH_COMPONENT24_OES 0x81A6
#define GL_DEPTH_COMPONENT32_OES 0x81A7
#define GL_DEPTH_FUNC 0x0B74
#define GL_DEPTH_RANGE 0x0B70
#define GL_DEPTH_TEST 0x0B71
#define GL_DEPTH_WRITEMASK 0x0B72
#define GL_DITHER 0x0BD0
#define GL_DONT_CARE 0x1100
#define GL_DST_ALPHA 0x0304
#define GL_DST_COLOR 0x0306
#define GL_DYNAMIC_DRAW 0x88E8
#define GL_ELEMENT_ARRAY_BUFFER 0x8893
#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895
#define GL_EQUAL 0x0202
#define GL_EXTENSIONS 0x1F03
#define GL_FALSE 0
#define GL_FASTEST 0x1101
#define GL_FLOAT 0x1406
#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES 0x8B8B
#define GL_FRAMEBUFFER 0x8D40
#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1
#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0
#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2
#define GL_FRAMEBUFFER_BINDING 0x8CA6
#define GL_FRAMEBUFFER_COMPLETE 0x8CD5
#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6
#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 0x8CD9
#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7
#define GL_FRAMEBUFFER_UNDEFINED 0x8219
#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD
#define GL_FRONT 0x0404
#define GL_FRONT_AND_BACK 0x0408
#define GL_FRONT_FACE 0x0B46
#define GL_FUNC_ADD 0x8006
#define GL_FUNC_REVERSE_SUBTRACT 0x800B
#define GL_FUNC_SUBTRACT 0x800A
#define GL_GENERATE_MIPMAP_HINT 0x8192
#define GL_GEQUAL 0x0206
#define GL_GREATER 0x0204
#define GL_GREEN_BITS 0x0D53
#define GL_GUILTY_CONTEXT_RESET 0x8253
#define GL_HIGH_FLOAT 0x8DF2
#define GL_HIGH_INT 0x8DF5
#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B
#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A
#define GL_INCR 0x1E02
#define GL_INCR_WRAP 0x8507
#define GL_INNOCENT_CONTEXT_RESET 0x8254
#define GL_INT 0x1404
#define GL_INVALID_ENUM 0x0500
#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506
#define GL_INVALID_OPERATION 0x0502
#define GL_INVALID_VALUE 0x0501
#define GL_INVERT 0x150A
#define GL_KEEP 0x1E00
#define GL_LEQUAL 0x0203
#define GL_LESS 0x0201
#define GL_LINEAR 0x2601
#define GL_LINEAR_MIPMAP_LINEAR 0x2703
#define GL_LINEAR_MIPMAP_NEAREST 0x2701
#define GL_LINES 0x0001
#define GL_LINE_LOOP 0x0002
#define GL_LINE_STRIP 0x0003
#define GL_LINE_WIDTH 0x0B21
#define GL_LINK_STATUS 0x8B82
#define GL_LOSE_CONTEXT_ON_RESET 0x8252
#define GL_LOW_FLOAT 0x8DF0
#define GL_LOW_INT 0x8DF3
#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D
#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD
#define GL_MAX_RENDERBUFFER_SIZE 0x84E8
#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872
#define GL_MAX_TEXTURE_SIZE 0x0D33
#define GL_MAX_VARYING_VECTORS 0x8DFC
#define GL_MAX_VERTEX_ATTRIBS 0x8869
#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C
#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB
#define GL_MAX_VIEWPORT_DIMS 0x0D3A
#define GL_MEDIUM_FLOAT 0x8DF1
#define GL_MEDIUM_INT 0x8DF4
#define GL_MIRRORED_REPEAT 0x8370
#define GL_NEAREST 0x2600
#define GL_NEAREST_MIPMAP_LINEAR 0x2702
#define GL_NEAREST_MIPMAP_NEAREST 0x2700
#define GL_NEVER 0x0200
#define GL_NICEST 0x1102
#define GL_NONE 0
#define GL_NOTEQUAL 0x0205
#define GL_NO_ERROR 0
#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
#define GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE
#define GL_ONE 1
#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004
#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002
#define GL_ONE_MINUS_DST_ALPHA 0x0305
#define GL_ONE_MINUS_DST_COLOR 0x0307
#define GL_ONE_MINUS_SRC_ALPHA 0x0303
#define GL_ONE_MINUS_SRC_COLOR 0x0301
#define GL_OUT_OF_MEMORY 0x0505
#define GL_PACK_ALIGNMENT 0x0D05
#define GL_POINTS 0x0000
#define GL_POLYGON_OFFSET_FACTOR 0x8038
#define GL_POLYGON_OFFSET_FILL 0x8037
#define GL_POLYGON_OFFSET_UNITS 0x2A00
#define GL_PROGRAM_BINARY_FORMATS 0x87FF
#define GL_PVRIC_SIGNATURE_MISMATCH_IMG 0x8EA3
#define GL_R8 0x8229
#define GL_RED 0x1903
#define GL_RED_BITS 0x0D52
#define GL_RENDERBUFFER 0x8D41
#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53
#define GL_RENDERBUFFER_BINDING 0x8CA7
#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52
#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54
#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51
#define GL_RENDERBUFFER_HEIGHT 0x8D43
#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44
#define GL_RENDERBUFFER_RED_SIZE 0x8D50
#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55
#define GL_RENDERBUFFER_WIDTH 0x8D42
#define GL_RENDERER 0x1F01
#define GL_REPEAT 0x2901
#define GL_REPLACE 0x1E01
#define GL_RESET_NOTIFICATION_STRATEGY 0x8256
#define GL_RG 0x8227
#define GL_RG8 0x822B
#define GL_RGB 0x1907
#define GL_RGB565 0x8D62
#define GL_RGB5_A1 0x8057
#define GL_RGB8 0x8051
#define GL_RGB8_OES 0x8051
#define GL_RGBA 0x1908
#define GL_RGBA4 0x8056
#define GL_RGBA8 0x8058
#define GL_RGBA8_OES 0x8058
#define GL_SAMPLER_2D 0x8B5E
#define GL_SAMPLES 0x80A9
#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E
#define GL_SAMPLE_BUFFERS 0x80A8
#define GL_SAMPLE_COVERAGE 0x80A0
#define GL_SAMPLE_COVERAGE_INVERT 0x80AB
#define GL_SAMPLE_COVERAGE_VALUE 0x80AA
#define GL_SCISSOR_BOX 0x0C10
#define GL_SCISSOR_TEST 0x0C11
#define GL_SHADING_LANGUAGE_VERSION 0x8B8C
#define GL_SHORT 0x1402
#define GL_SRC_ALPHA 0x0302
#define GL_SRC_ALPHA_SATURATE 0x0308
#define GL_SRC_COLOR 0x0300
#define GL_STATIC_DRAW 0x88E4
#define GL_STENCIL_ATTACHMENT 0x8D20
#define GL_STENCIL_BACK_FAIL 0x8801
#define GL_STENCIL_BACK_FUNC 0x8800
#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802
#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803
#define GL_STENCIL_BACK_REF 0x8CA3
#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4
#define GL_STENCIL_BACK_WRITEMASK 0x8CA5
#define GL_STENCIL_BITS 0x0D57
#define GL_STENCIL_BUFFER_BIT 0x00000400
#define GL_STENCIL_CLEAR_VALUE 0x0B91
#define GL_STENCIL_FAIL 0x0B94
#define GL_STENCIL_FUNC 0x0B92
#define GL_STENCIL_INDEX8 0x8D48
#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95
#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96
#define GL_STENCIL_REF 0x0B97
#define GL_STENCIL_TEST 0x0B90
#define GL_STENCIL_VALUE_MASK 0x0B93
#define GL_STENCIL_WRITEMASK 0x0B98
#define GL_STREAM_DRAW 0x88E0
#define GL_SUBPIXEL_BITS 0x0D50
#define GL_TEXTURE 0x1702
#define GL_TEXTURE0 0x84C0
#define GL_TEXTURE1 0x84C1
#define GL_TEXTURE10 0x84CA
#define GL_TEXTURE11 0x84CB
#define GL_TEXTURE12 0x84CC
#define GL_TEXTURE13 0x84CD
#define GL_TEXTURE14 0x84CE
#define GL_TEXTURE15 0x84CF
#define GL_TEXTURE16 0x84D0
#define GL_TEXTURE17 0x84D1
#define GL_TEXTURE18 0x84D2
#define GL_TEXTURE19 0x84D3
#define GL_TEXTURE2 0x84C2
#define GL_TEXTURE20 0x84D4
#define GL_TEXTURE21 0x84D5
#define GL_TEXTURE22 0x84D6
#define GL_TEXTURE23 0x84D7
#define GL_TEXTURE24 0x84D8
#define GL_TEXTURE25 0x84D9
#define GL_TEXTURE26 0x84DA
#define GL_TEXTURE27 0x84DB
#define GL_TEXTURE28 0x84DC
#define GL_TEXTURE29 0x84DD
#define GL_TEXTURE3 0x84C3
#define GL_TEXTURE30 0x84DE
#define GL_TEXTURE31 0x84DF
#define GL_TEXTURE4 0x84C4
#define GL_TEXTURE5 0x84C5
#define GL_TEXTURE6 0x84C6
#define GL_TEXTURE7 0x84C7
#define GL_TEXTURE8 0x84C8
#define GL_TEXTURE9 0x84C9
#define GL_TEXTURE_2D 0x0DE1
#define GL_TEXTURE_BINDING_2D 0x8069
#define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F
#define GL_TEXTURE_MAG_FILTER 0x2800
#define GL_TEXTURE_MIN_FILTER 0x2801
#define GL_TEXTURE_WRAP_S 0x2802
#define GL_TEXTURE_WRAP_T 0x2803
#define GL_TRIANGLES 0x0004
#define GL_TRIANGLE_FAN 0x0006
#define GL_TRIANGLE_STRIP 0x0005
#define GL_TRP_ERROR_CONTEXT_RESET_IMG 0x8EA1
#define GL_TRP_IMG 0x8EA0
#define GL_TRP_UNSUPPORTED_CONTEXT_IMG 0x8EA2
#define GL_TRUE 1
#define GL_UNKNOWN_CONTEXT_RESET 0x8255
#define GL_UNPACK_ALIGNMENT 0x0CF5
#define GL_UNSIGNED_BYTE 0x1401
#define GL_UNSIGNED_INT 0x1405
#define GL_UNSIGNED_SHORT 0x1403
#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033
#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034
#define GL_UNSIGNED_SHORT_5_6_5 0x8363
#define GL_VENDOR 0x1F00
#define GL_VERSION 0x1F02
#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F
#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622
#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A
#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645
#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623
#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624
#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625
#define GL_VIEWPORT 0x0BA2
#define GL_ZERO 0
#include <KHR/khrplatform.h>
typedef unsigned int GLenum;
typedef unsigned char GLboolean;
typedef unsigned int GLbitfield;
typedef void GLvoid;
typedef khronos_int8_t GLbyte;
typedef khronos_uint8_t GLubyte;
typedef khronos_int16_t GLshort;
typedef khronos_uint16_t GLushort;
typedef int GLint;
typedef unsigned int GLuint;
typedef khronos_int32_t GLclampx;
typedef int GLsizei;
typedef khronos_float_t GLfloat;
typedef khronos_float_t GLclampf;
typedef double GLdouble;
typedef double GLclampd;
typedef void *GLeglClientBufferEXT;
typedef void *GLeglImageOES;
typedef char GLchar;
typedef char GLcharARB;
#ifdef __APPLE__
typedef void *GLhandleARB;
#else
typedef unsigned int GLhandleARB;
#endif
typedef khronos_uint16_t GLhalf;
typedef khronos_uint16_t GLhalfARB;
typedef khronos_int32_t GLfixed;
#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ > 1060)
typedef khronos_intptr_t GLintptr;
#else
typedef khronos_intptr_t GLintptr;
#endif
#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ > 1060)
typedef khronos_intptr_t GLintptrARB;
#else
typedef khronos_intptr_t GLintptrARB;
#endif
#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ > 1060)
typedef khronos_ssize_t GLsizeiptr;
#else
typedef khronos_ssize_t GLsizeiptr;
#endif
#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ > 1060)
typedef khronos_ssize_t GLsizeiptrARB;
#else
typedef khronos_ssize_t GLsizeiptrARB;
#endif
typedef khronos_int64_t GLint64;
typedef khronos_int64_t GLint64EXT;
typedef khronos_uint64_t GLuint64;
typedef khronos_uint64_t GLuint64EXT;
typedef struct __GLsync *GLsync;
struct _cl_context;
struct _cl_event;
typedef void (GLAD_API_PTR *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
typedef void (GLAD_API_PTR *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
typedef void (GLAD_API_PTR *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
typedef void (GLAD_API_PTR *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,void *userParam);
typedef unsigned short GLhalfNV;
typedef GLintptr GLvdpauSurfaceNV;
typedef void (GLAD_API_PTR *GLVULKANPROCNV)(void);
#define GL_SC_VERSION_2_0 1
#define GL_EXT_texture_compression_s3tc 1
#define GL_IMG_pvric_end_to_end_signature 1
#define GL_IMG_tile_region_protection 1
#define GL_OES_depth24 1
#define GL_OES_depth32 1
#define GL_OES_rgb8_rgba8 1
#define GL_OES_standard_derivatives 1
typedef void (GLAD_API_PTR *PFNGLACTIVETEXTUREPROC)(GLenum texture);
typedef void (GLAD_API_PTR *PFNGLBINDBUFFERPROC)(GLenum target, GLuint buffer);
typedef void (GLAD_API_PTR *PFNGLBINDFRAMEBUFFERPROC)(GLenum target, GLuint framebuffer);
typedef void (GLAD_API_PTR *PFNGLBINDRENDERBUFFERPROC)(GLenum target, GLuint renderbuffer);
typedef void (GLAD_API_PTR *PFNGLBINDTEXTUREPROC)(GLenum target, GLuint texture);
typedef void (GLAD_API_PTR *PFNGLBLENDCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
typedef void (GLAD_API_PTR *PFNGLBLENDEQUATIONPROC)(GLenum mode);
typedef void (GLAD_API_PTR *PFNGLBLENDEQUATIONSEPARATEPROC)(GLenum modeRGB, GLenum modeAlpha);
typedef void (GLAD_API_PTR *PFNGLBLENDFUNCPROC)(GLenum sfactor, GLenum dfactor);
typedef void (GLAD_API_PTR *PFNGLBLENDFUNCSEPARATEPROC)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
typedef void (GLAD_API_PTR *PFNGLBUFFERDATAPROC)(GLenum target, GLsizeiptr size, const void * data, GLenum usage);
typedef void (GLAD_API_PTR *PFNGLBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, GLsizeiptr size, const void * data);
typedef GLenum (GLAD_API_PTR *PFNGLCHECKFRAMEBUFFERSTATUSPROC)(GLenum target);
typedef void (GLAD_API_PTR *PFNGLCLEARPROC)(GLbitfield mask);
typedef void (GLAD_API_PTR *PFNGLCLEARCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
typedef void (GLAD_API_PTR *PFNGLCLEARDEPTHFPROC)(GLfloat d);
typedef void (GLAD_API_PTR *PFNGLCLEARSTENCILPROC)(GLint s);
typedef void (GLAD_API_PTR *PFNGLCOLORMASKPROC)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
typedef void (GLAD_API_PTR *PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void * data);
typedef GLuint (GLAD_API_PTR *PFNGLCREATEPROGRAMPROC)(void);
typedef void (GLAD_API_PTR *PFNGLCULLFACEPROC)(GLenum mode);
typedef void (GLAD_API_PTR *PFNGLDEPTHFUNCPROC)(GLenum func);
typedef void (GLAD_API_PTR *PFNGLDEPTHMASKPROC)(GLboolean flag);
typedef void (GLAD_API_PTR *PFNGLDEPTHRANGEFPROC)(GLfloat n, GLfloat f);
typedef void (GLAD_API_PTR *PFNGLDISABLEPROC)(GLenum cap);
typedef void (GLAD_API_PTR *PFNGLDISABLEVERTEXATTRIBARRAYPROC)(GLuint index);
typedef void (GLAD_API_PTR *PFNGLDRAWARRAYSPROC)(GLenum mode, GLint first, GLsizei count);
typedef void (GLAD_API_PTR *PFNGLDRAWRANGEELEMENTSPROC)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices);
typedef void (GLAD_API_PTR *PFNGLENABLEPROC)(GLenum cap);
typedef void (GLAD_API_PTR *PFNGLENABLEVERTEXATTRIBARRAYPROC)(GLuint index);
typedef void (GLAD_API_PTR *PFNGLFINISHPROC)(void);
typedef void (GLAD_API_PTR *PFNGLFLUSHPROC)(void);
typedef void (GLAD_API_PTR *PFNGLFRAMEBUFFERRENDERBUFFERPROC)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
typedef void (GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTURE2DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
typedef void (GLAD_API_PTR *PFNGLFRONTFACEPROC)(GLenum mode);
typedef void (GLAD_API_PTR *PFNGLGENBUFFERSPROC)(GLsizei n, GLuint * buffers);
typedef void (GLAD_API_PTR *PFNGLGENFRAMEBUFFERSPROC)(GLsizei n, GLuint * framebuffers);
typedef void (GLAD_API_PTR *PFNGLGENRENDERBUFFERSPROC)(GLsizei n, GLuint * renderbuffers);
typedef void (GLAD_API_PTR *PFNGLGENTEXTURESPROC)(GLsizei n, GLuint * textures);
typedef void (GLAD_API_PTR *PFNGLGENERATEMIPMAPPROC)(GLenum target);
typedef GLint (GLAD_API_PTR *PFNGLGETATTRIBLOCATIONPROC)(GLuint program, const GLchar * name);
typedef void (GLAD_API_PTR *PFNGLGETBOOLEANVPROC)(GLenum pname, GLboolean * data);
typedef void (GLAD_API_PTR *PFNGLGETBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint * params);
typedef GLenum (GLAD_API_PTR *PFNGLGETERRORPROC)(void);
typedef void (GLAD_API_PTR *PFNGLGETFLOATVPROC)(GLenum pname, GLfloat * data);
typedef void (GLAD_API_PTR *PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)(GLenum target, GLenum attachment, GLenum pname, GLint * params);
typedef GLenum (GLAD_API_PTR *PFNGLGETGRAPHICSRESETSTATUSPROC)(void);
typedef void (GLAD_API_PTR *PFNGLGETINTEGERVPROC)(GLenum pname, GLint * data);
typedef void (GLAD_API_PTR *PFNGLGETPROGRAMIVPROC)(GLuint program, GLenum pname, GLint * params);
typedef void (GLAD_API_PTR *PFNGLGETRENDERBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint * params);
typedef const GLubyte * (GLAD_API_PTR *PFNGLGETSTRINGPROC)(GLenum name);
typedef void (GLAD_API_PTR *PFNGLGETTEXPARAMETERFVPROC)(GLenum target, GLenum pname, GLfloat * params);
typedef void (GLAD_API_PTR *PFNGLGETTEXPARAMETERIVPROC)(GLenum target, GLenum pname, GLint * params);
typedef GLint (GLAD_API_PTR *PFNGLGETUNIFORMLOCATIONPROC)(GLuint program, const GLchar * name);
typedef void (GLAD_API_PTR *PFNGLGETVERTEXATTRIBPOINTERVPROC)(GLuint index, GLenum pname, void ** pointer);
typedef void (GLAD_API_PTR *PFNGLGETVERTEXATTRIBFVPROC)(GLuint index, GLenum pname, GLfloat * params);
typedef void (GLAD_API_PTR *PFNGLGETVERTEXATTRIBIVPROC)(GLuint index, GLenum pname, GLint * params);
typedef void (GLAD_API_PTR *PFNGLGETNUNIFORMFVPROC)(GLuint program, GLint location, GLsizei bufSize, GLfloat * params);
typedef void (GLAD_API_PTR *PFNGLGETNUNIFORMIVPROC)(GLuint program, GLint location, GLsizei bufSize, GLint * params);
typedef void (GLAD_API_PTR *PFNGLHINTPROC)(GLenum target, GLenum mode);
typedef GLboolean (GLAD_API_PTR *PFNGLISENABLEDPROC)(GLenum cap);
typedef void (GLAD_API_PTR *PFNGLLINEWIDTHPROC)(GLfloat width);
typedef void (GLAD_API_PTR *PFNGLPIXELSTOREIPROC)(GLenum pname, GLint param);
typedef void (GLAD_API_PTR *PFNGLPOLYGONOFFSETPROC)(GLfloat factor, GLfloat units);
typedef void (GLAD_API_PTR *PFNGLPROGRAMBINARYPROC)(GLuint program, GLenum binaryFormat, const void * binary, GLsizei length);
typedef void (GLAD_API_PTR *PFNGLREADNPIXELSPROC)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void * data);
typedef void (GLAD_API_PTR *PFNGLRENDERBUFFERSTORAGEPROC)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
typedef void (GLAD_API_PTR *PFNGLSAMPLECOVERAGEPROC)(GLfloat value, GLboolean invert);
typedef void (GLAD_API_PTR *PFNGLSCISSORPROC)(GLint x, GLint y, GLsizei width, GLsizei height);
typedef void (GLAD_API_PTR *PFNGLSTENCILFUNCPROC)(GLenum func, GLint ref, GLuint mask);
typedef void (GLAD_API_PTR *PFNGLSTENCILFUNCSEPARATEPROC)(GLenum face, GLenum func, GLint ref, GLuint mask);
typedef void (GLAD_API_PTR *PFNGLSTENCILMASKPROC)(GLuint mask);
typedef void (GLAD_API_PTR *PFNGLSTENCILMASKSEPARATEPROC)(GLenum face, GLuint mask);
typedef void (GLAD_API_PTR *PFNGLSTENCILOPPROC)(GLenum fail, GLenum zfail, GLenum zpass);
typedef void (GLAD_API_PTR *PFNGLSTENCILOPSEPARATEPROC)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
typedef void (GLAD_API_PTR *PFNGLTEXPARAMETERFPROC)(GLenum target, GLenum pname, GLfloat param);
typedef void (GLAD_API_PTR *PFNGLTEXPARAMETERFVPROC)(GLenum target, GLenum pname, const GLfloat * params);
typedef void (GLAD_API_PTR *PFNGLTEXPARAMETERIPROC)(GLenum target, GLenum pname, GLint param);
typedef void (GLAD_API_PTR *PFNGLTEXPARAMETERIVPROC)(GLenum target, GLenum pname, const GLint * params);
typedef void (GLAD_API_PTR *PFNGLTEXSTORAGE2DPROC)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
typedef void (GLAD_API_PTR *PFNGLTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * pixels);
typedef void (GLAD_API_PTR *PFNGLUNIFORM1FPROC)(GLint location, GLfloat v0);
typedef void (GLAD_API_PTR *PFNGLUNIFORM1FVPROC)(GLint location, GLsizei count, const GLfloat * value);
typedef void (GLAD_API_PTR *PFNGLUNIFORM1IPROC)(GLint location, GLint v0);
typedef void (GLAD_API_PTR *PFNGLUNIFORM1IVPROC)(GLint location, GLsizei count, const GLint * value);
typedef void (GLAD_API_PTR *PFNGLUNIFORM2FPROC)(GLint location, GLfloat v0, GLfloat v1);
typedef void (GLAD_API_PTR *PFNGLUNIFORM2FVPROC)(GLint location, GLsizei count, const GLfloat * value);
typedef void (GLAD_API_PTR *PFNGLUNIFORM2IPROC)(GLint location, GLint v0, GLint v1);
typedef void (GLAD_API_PTR *PFNGLUNIFORM2IVPROC)(GLint location, GLsizei count, const GLint * value);
typedef void (GLAD_API_PTR *PFNGLUNIFORM3FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
typedef void (GLAD_API_PTR *PFNGLUNIFORM3FVPROC)(GLint location, GLsizei count, const GLfloat * value);
typedef void (GLAD_API_PTR *PFNGLUNIFORM3IPROC)(GLint location, GLint v0, GLint v1, GLint v2);
typedef void (GLAD_API_PTR *PFNGLUNIFORM3IVPROC)(GLint location, GLsizei count, const GLint * value);
typedef void (GLAD_API_PTR *PFNGLUNIFORM4FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
typedef void (GLAD_API_PTR *PFNGLUNIFORM4FVPROC)(GLint location, GLsizei count, const GLfloat * value);
typedef void (GLAD_API_PTR *PFNGLUNIFORM4IPROC)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
typedef void (GLAD_API_PTR *PFNGLUNIFORM4IVPROC)(GLint location, GLsizei count, const GLint * value);
typedef void (GLAD_API_PTR *PFNGLUNIFORMMATRIX2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
typedef void (GLAD_API_PTR *PFNGLUNIFORMMATRIX3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
typedef void (GLAD_API_PTR *PFNGLUNIFORMMATRIX4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
typedef void (GLAD_API_PTR *PFNGLUSEPROGRAMPROC)(GLuint program);
typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB1FPROC)(GLuint index, GLfloat x);
typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB1FVPROC)(GLuint index, const GLfloat * v);
typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB2FPROC)(GLuint index, GLfloat x, GLfloat y);
typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB2FVPROC)(GLuint index, const GLfloat * v);
typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB3FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z);
typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB3FVPROC)(GLuint index, const GLfloat * v);
typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB4FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIB4FVPROC)(GLuint index, const GLfloat * v);
typedef void (GLAD_API_PTR *PFNGLVERTEXATTRIBPOINTERPROC)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void * pointer);
typedef void (GLAD_API_PTR *PFNGLVIEWPORTPROC)(GLint x, GLint y, GLsizei width, GLsizei height);
typedef struct GladGLSC2Context {
void* userptr;
int SC_VERSION_2_0;
int EXT_texture_compression_s3tc;
int IMG_pvric_end_to_end_signature;
int IMG_tile_region_protection;
int OES_depth24;
int OES_depth32;
int OES_rgb8_rgba8;
int OES_standard_derivatives;
PFNGLACTIVETEXTUREPROC ActiveTexture;
PFNGLBINDBUFFERPROC BindBuffer;
PFNGLBINDFRAMEBUFFERPROC BindFramebuffer;
PFNGLBINDRENDERBUFFERPROC BindRenderbuffer;
PFNGLBINDTEXTUREPROC BindTexture;
PFNGLBLENDCOLORPROC BlendColor;
PFNGLBLENDEQUATIONPROC BlendEquation;
PFNGLBLENDEQUATIONSEPARATEPROC BlendEquationSeparate;
PFNGLBLENDFUNCPROC BlendFunc;
PFNGLBLENDFUNCSEPARATEPROC BlendFuncSeparate;
PFNGLBUFFERDATAPROC BufferData;
PFNGLBUFFERSUBDATAPROC BufferSubData;
PFNGLCHECKFRAMEBUFFERSTATUSPROC CheckFramebufferStatus;
PFNGLCLEARPROC Clear;
PFNGLCLEARCOLORPROC ClearColor;
PFNGLCLEARDEPTHFPROC ClearDepthf;
PFNGLCLEARSTENCILPROC ClearStencil;
PFNGLCOLORMASKPROC ColorMask;
PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC CompressedTexSubImage2D;
PFNGLCREATEPROGRAMPROC CreateProgram;
PFNGLCULLFACEPROC CullFace;
PFNGLDEPTHFUNCPROC DepthFunc;
PFNGLDEPTHMASKPROC DepthMask;
PFNGLDEPTHRANGEFPROC DepthRangef;
PFNGLDISABLEPROC Disable;
PFNGLDISABLEVERTEXATTRIBARRAYPROC DisableVertexAttribArray;
PFNGLDRAWARRAYSPROC DrawArrays;
PFNGLDRAWRANGEELEMENTSPROC DrawRangeElements;
PFNGLENABLEPROC Enable;
PFNGLENABLEVERTEXATTRIBARRAYPROC EnableVertexAttribArray;
PFNGLFINISHPROC Finish;
PFNGLFLUSHPROC Flush;
PFNGLFRAMEBUFFERRENDERBUFFERPROC FramebufferRenderbuffer;
PFNGLFRAMEBUFFERTEXTURE2DPROC FramebufferTexture2D;
PFNGLFRONTFACEPROC FrontFace;
PFNGLGENBUFFERSPROC GenBuffers;
PFNGLGENFRAMEBUFFERSPROC GenFramebuffers;
PFNGLGENRENDERBUFFERSPROC GenRenderbuffers;
PFNGLGENTEXTURESPROC GenTextures;
PFNGLGENERATEMIPMAPPROC GenerateMipmap;
PFNGLGETATTRIBLOCATIONPROC GetAttribLocation;
PFNGLGETBOOLEANVPROC GetBooleanv;
PFNGLGETBUFFERPARAMETERIVPROC GetBufferParameteriv;
PFNGLGETERRORPROC GetError;
PFNGLGETFLOATVPROC GetFloatv;
PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC GetFramebufferAttachmentParameteriv;
PFNGLGETGRAPHICSRESETSTATUSPROC GetGraphicsResetStatus;
PFNGLGETINTEGERVPROC GetIntegerv;
PFNGLGETPROGRAMIVPROC GetProgramiv;
PFNGLGETRENDERBUFFERPARAMETERIVPROC GetRenderbufferParameteriv;
PFNGLGETSTRINGPROC GetString;
PFNGLGETTEXPARAMETERFVPROC GetTexParameterfv;
PFNGLGETTEXPARAMETERIVPROC GetTexParameteriv;
PFNGLGETUNIFORMLOCATIONPROC GetUniformLocation;
PFNGLGETVERTEXATTRIBPOINTERVPROC GetVertexAttribPointerv;
PFNGLGETVERTEXATTRIBFVPROC GetVertexAttribfv;
PFNGLGETVERTEXATTRIBIVPROC GetVertexAttribiv;
PFNGLGETNUNIFORMFVPROC GetnUniformfv;
PFNGLGETNUNIFORMIVPROC GetnUniformiv;
PFNGLHINTPROC Hint;
PFNGLISENABLEDPROC IsEnabled;
PFNGLLINEWIDTHPROC LineWidth;
PFNGLPIXELSTOREIPROC PixelStorei;
PFNGLPOLYGONOFFSETPROC PolygonOffset;
PFNGLPROGRAMBINARYPROC ProgramBinary;
PFNGLREADNPIXELSPROC ReadnPixels;
PFNGLRENDERBUFFERSTORAGEPROC RenderbufferStorage;
PFNGLSAMPLECOVERAGEPROC SampleCoverage;
PFNGLSCISSORPROC Scissor;
PFNGLSTENCILFUNCPROC StencilFunc;
PFNGLSTENCILFUNCSEPARATEPROC StencilFuncSeparate;
PFNGLSTENCILMASKPROC StencilMask;
PFNGLSTENCILMASKSEPARATEPROC StencilMaskSeparate;
PFNGLSTENCILOPPROC StencilOp;
PFNGLSTENCILOPSEPARATEPROC StencilOpSeparate;
PFNGLTEXPARAMETERFPROC TexParameterf;
PFNGLTEXPARAMETERFVPROC TexParameterfv;
PFNGLTEXPARAMETERIPROC TexParameteri;
PFNGLTEXPARAMETERIVPROC TexParameteriv;
PFNGLTEXSTORAGE2DPROC TexStorage2D;
PFNGLTEXSUBIMAGE2DPROC TexSubImage2D;
PFNGLUNIFORM1FPROC Uniform1f;
PFNGLUNIFORM1FVPROC Uniform1fv;
PFNGLUNIFORM1IPROC Uniform1i;
PFNGLUNIFORM1IVPROC Uniform1iv;
PFNGLUNIFORM2FPROC Uniform2f;
PFNGLUNIFORM2FVPROC Uniform2fv;
PFNGLUNIFORM2IPROC Uniform2i;
PFNGLUNIFORM2IVPROC Uniform2iv;
PFNGLUNIFORM3FPROC Uniform3f;
PFNGLUNIFORM3FVPROC Uniform3fv;
PFNGLUNIFORM3IPROC Uniform3i;
PFNGLUNIFORM3IVPROC Uniform3iv;
PFNGLUNIFORM4FPROC Uniform4f;
PFNGLUNIFORM4FVPROC Uniform4fv;
PFNGLUNIFORM4IPROC Uniform4i;
PFNGLUNIFORM4IVPROC Uniform4iv;
PFNGLUNIFORMMATRIX2FVPROC UniformMatrix2fv;
PFNGLUNIFORMMATRIX3FVPROC UniformMatrix3fv;
PFNGLUNIFORMMATRIX4FVPROC UniformMatrix4fv;
PFNGLUSEPROGRAMPROC UseProgram;
PFNGLVERTEXATTRIB1FPROC VertexAttrib1f;
PFNGLVERTEXATTRIB1FVPROC VertexAttrib1fv;
PFNGLVERTEXATTRIB2FPROC VertexAttrib2f;
PFNGLVERTEXATTRIB2FVPROC VertexAttrib2fv;
PFNGLVERTEXATTRIB3FPROC VertexAttrib3f;
PFNGLVERTEXATTRIB3FVPROC VertexAttrib3fv;
PFNGLVERTEXATTRIB4FPROC VertexAttrib4f;
PFNGLVERTEXATTRIB4FVPROC VertexAttrib4fv;
PFNGLVERTEXATTRIBPOINTERPROC VertexAttribPointer;
PFNGLVIEWPORTPROC Viewport;
void* glad_loader_handle;
} GladGLSC2Context;
GLAD_API_CALL int gladLoadGLSC2ContextUserPtr(GladGLSC2Context *context, GLADuserptrloadfunc load, void *userptr);
GLAD_API_CALL int gladLoadGLSC2Context(GladGLSC2Context *context, GLADloadfunc load);
#ifdef __cplusplus
}
#endif
#endif
@@ -4684,7 +4684,7 @@ extern "C" {
#pragma endregion
#include "KHR/khrplatform.h"
#include "khrplatform.h"
typedef unsigned int GLenum;
typedef unsigned char GLboolean;
typedef unsigned int GLbitfield;
@@ -0,0 +1,779 @@
/**
* Loader generated by glad 2.0.4 on Thu Oct 26 14:05:44 2023
*
* SPDX-License-Identifier: (WTFPL OR CC0-1.0) AND Apache-2.0
*
* Generator: C/C++
* Specification: gl
* Extensions: 7
*
* APIs:
* - glsc2=2.0
*
* Options:
* - ALIAS = False
* - DEBUG = False
* - HEADER_ONLY = False
* - LOADER = True
* - MX = True
* - ON_DEMAND = False
*
* Commandline:
* --api='glsc2=2.0' --extensions='GL_EXT_texture_compression_s3tc,GL_IMG_pvric_end_to_end_signature,GL_IMG_tile_region_protection,GL_OES_depth24,GL_OES_depth32,GL_OES_rgb8_rgba8,GL_OES_standard_derivatives' c --loader --mx
*
* Online:
* http://glad.sh/#api=glsc2%3D2.0&extensions=GL_EXT_texture_compression_s3tc%2CGL_IMG_pvric_end_to_end_signature%2CGL_IMG_tile_region_protection%2CGL_OES_depth24%2CGL_OES_depth32%2CGL_OES_rgb8_rgba8%2CGL_OES_standard_derivatives&generator=c&options=LOADER%2CMX
*
*/
#ifndef GLAD_GLSC2_H_
#define GLAD_GLSC2_H_
#ifdef __clang__
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wreserved-id-macro"
#endif
#ifdef __clang__
#pragma clang diagnostic pop
#endif
#define GLAD_GLSC2
#define GLAD_OPTION_GLSC2_LOADER
#define GLAD_OPTION_GLSC2_MX
#ifdef __cplusplus
extern "C" {
#endif
#ifndef GLAD_PLATFORM_H_
#define GLAD_PLATFORM_H_
#ifndef GLAD_PLATFORM_WIN32
#if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__MINGW32__)
#define GLAD_PLATFORM_WIN32 1
#else
#define GLAD_PLATFORM_WIN32 0
#endif
#endif
#ifndef GLAD_PLATFORM_APPLE
#ifdef __APPLE__
#define GLAD_PLATFORM_APPLE 1
#else
#define GLAD_PLATFORM_APPLE 0
#endif
#endif
#ifndef GLAD_PLATFORM_EMSCRIPTEN
#ifdef __EMSCRIPTEN__
#define GLAD_PLATFORM_EMSCRIPTEN 1
#else
#define GLAD_PLATFORM_EMSCRIPTEN 0
#endif
#endif
#ifndef GLAD_PLATFORM_UWP
#if defined(_MSC_VER) && !defined(GLAD_INTERNAL_HAVE_WINAPIFAMILY)
#ifdef __has_include
#if __has_include(<winapifamily.h>)
#define GLAD_INTERNAL_HAVE_WINAPIFAMILY 1
#endif
#elif _MSC_VER >= 1700 && !_USING_V110_SDK71_
#define GLAD_INTERNAL_HAVE_WINAPIFAMILY 1
#endif
#endif
#ifdef GLAD_INTERNAL_HAVE_WINAPIFAMILY
#include <winapifamily.h>
#if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
#define GLAD_PLATFORM_UWP 1
#endif
#endif
#ifndef GLAD_PLATFORM_UWP
#define GLAD_PLATFORM_UWP 0
#endif
#endif
#ifdef __GNUC__
#define GLAD_GNUC_EXTENSION __extension__
#else
#define GLAD_GNUC_EXTENSION
#endif
#define GLAD_UNUSED(x) (void)(x)
#ifndef GLAD_API_CALL
#if defined(GLAD_API_CALL_EXPORT)
#if GLAD_PLATFORM_WIN32 || defined(__CYGWIN__)
#if defined(GLAD_API_CALL_EXPORT_BUILD)
#if defined(__GNUC__)
#define GLAD_API_CALL __attribute__ ((dllexport)) extern
#else
#define GLAD_API_CALL __declspec(dllexport) extern
#endif
#else
#if defined(__GNUC__)
#define GLAD_API_CALL __attribute__ ((dllimport)) extern
#else
#define GLAD_API_CALL __declspec(dllimport) extern
#endif
#endif
#elif defined(__GNUC__) && defined(GLAD_API_CALL_EXPORT_BUILD)
#define GLAD_API_CALL __attribute__ ((visibility ("default"))) extern
#else
#define GLAD_API_CALL extern
#endif
#else
#define GLAD_API_CALL extern
#endif
#endif
#ifdef APIENTRY
#define GLAD_API_PTR APIENTRY
#elif GLAD_PLATFORM_WIN32
#define GLAD_API_PTR __stdcall
#else
#define GLAD_API_PTR
#endif
#ifndef GLAPI
#define GLAPI GLAD_API_CALL
#endif
#ifndef GLAPIENTRY
#define GLAPIENTRY GLAD_API_PTR
#endif
#define GLAD_MAKE_VERSION(major, minor) (major * 10000 + minor)
#define GLAD_VERSION_MAJOR(version) (version / 10000)
#define GLAD_VERSION_MINOR(version) (version % 10000)
#define GLAD_GENERATOR_VERSION "2.0.4"
typedef void (*GLADapiproc)(void);
typedef GLADapiproc(*GLADloadfunc)(const char* name);
typedef GLADapiproc(*GLADuserptrloadfunc)(void* userptr, const char* name);
typedef void (*GLADprecallback)(const char* name, GLADapiproc apiproc, int len_args, ...);
typedef void (*GLADpostcallback)(void* ret, const char* name, GLADapiproc apiproc, int len_args, ...);
#endif /* GLAD_PLATFORM_H_ */
#define GL_ACTIVE_TEXTURE 0x84E0
#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E
#define GL_ALIASED_POINT_SIZE_RANGE 0x846D
#define GL_ALPHA_BITS 0x0D55
#define GL_ALWAYS 0x0207
#define GL_ARRAY_BUFFER 0x8892
#define GL_ARRAY_BUFFER_BINDING 0x8894
#define GL_BACK 0x0405
#define GL_BLEND 0x0BE2
#define GL_BLEND_COLOR 0x8005
#define GL_BLEND_DST_ALPHA 0x80CA
#define GL_BLEND_DST_RGB 0x80C8
#define GL_BLEND_EQUATION 0x8009
#define GL_BLEND_EQUATION_ALPHA 0x883D
#define GL_BLEND_EQUATION_RGB 0x8009
#define GL_BLEND_SRC_ALPHA 0x80CB
#define GL_BLEND_SRC_RGB 0x80C9
#define GL_BLUE_BITS 0x0D54
#define GL_BUFFER_SIZE 0x8764
#define GL_BUFFER_USAGE 0x8765
#define GL_BYTE 0x1400
#define GL_CCW 0x0901
#define GL_CLAMP_TO_EDGE 0x812F
#define GL_COLOR_ATTACHMENT0 0x8CE0
#define GL_COLOR_BUFFER_BIT 0x00004000
#define GL_COLOR_CLEAR_VALUE 0x0C22
#define GL_COLOR_WRITEMASK 0x0C23
#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1
#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2
#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3
#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0
#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3
#define GL_CONSTANT_ALPHA 0x8003
#define GL_CONSTANT_COLOR 0x8001
#define GL_CONTEXT_LOST 0x0507
#define GL_CONTEXT_ROBUST_ACCESS 0x90F3
#define GL_CULL_FACE 0x0B44
#define GL_CULL_FACE_MODE 0x0B45
#define GL_CURRENT_PROGRAM 0x8B8D
#define GL_CURRENT_VERTEX_ATTRIB 0x8626
#define GL_CW 0x0900
#define GL_DECR 0x1E03
#define GL_DECR_WRAP 0x8508
#define GL_DEPTH_ATTACHMENT 0x8D00
#define GL_DEPTH_BITS 0x0D56
#define GL_DEPTH_BUFFER_BIT 0x00000100
#define GL_DEPTH_CLEAR_VALUE 0x0B73
#define GL_DEPTH_COMPONENT16 0x81A5
#define GL_DEPTH_COMPONENT24_OES 0x81A6
#define GL_DEPTH_COMPONENT32_OES 0x81A7
#define GL_DEPTH_FUNC 0x0B74
#define GL_DEPTH_RANGE 0x0B70
#define GL_DEPTH_TEST 0x0B71
#define GL_DEPTH_WRITEMASK 0x0B72
#define GL_DITHER 0x0BD0
#define GL_DONT_CARE 0x1100
#define GL_DST_ALPHA 0x0304
#define GL_DST_COLOR 0x0306
#define GL_DYNAMIC_DRAW 0x88E8
#define GL_ELEMENT_ARRAY_BUFFER 0x8893
#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895
#define GL_EQUAL 0x0202
#define GL_EXTENSIONS 0x1F03
#define GL_FALSE 0
#define GL_FASTEST 0x1101
#define GL_FLOAT 0x1406
#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES 0x8B8B
#define GL_FRAMEBUFFER 0x8D40
#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1
#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0
#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2
#define GL_FRAMEBUFFER_BINDING 0x8CA6
#define GL_FRAMEBUFFER_COMPLETE 0x8CD5
#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6
#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 0x8CD9
#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7
#define GL_FRAMEBUFFER_UNDEFINED 0x8219
#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD
#define GL_FRONT 0x0404
#define GL_FRONT_AND_BACK 0x0408
#define GL_FRONT_FACE 0x0B46
#define GL_FUNC_ADD 0x8006
#define GL_FUNC_REVERSE_SUBTRACT 0x800B
#define GL_FUNC_SUBTRACT 0x800A
#define GL_GENERATE_MIPMAP_HINT 0x8192
#define GL_GEQUAL 0x0206
#define GL_GREATER 0x0204
#define GL_GREEN_BITS 0x0D53
#define GL_GUILTY_CONTEXT_RESET 0x8253
#define GL_HIGH_FLOAT 0x8DF2
#define GL_HIGH_INT 0x8DF5
#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B
#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A
#define GL_INCR 0x1E02
#define GL_INCR_WRAP 0x8507
#define GL_INNOCENT_CONTEXT_RESET 0x8254
#define GL_INT 0x1404
#define GL_INVALID_ENUM 0x0500
#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506
#define GL_INVALID_OPERATION 0x0502
#define GL_INVALID_VALUE 0x0501
#define GL_INVERT 0x150A
#define GL_KEEP 0x1E00
#define GL_LEQUAL 0x0203
#define GL_LESS 0x0201
#define GL_LINEAR 0x2601
#define GL_LINEAR_MIPMAP_LINEAR 0x2703
#define GL_LINEAR_MIPMAP_NEAREST 0x2701
#define GL_LINES 0x0001
#define GL_LINE_LOOP 0x0002
#define GL_LINE_STRIP 0x0003
#define GL_LINE_WIDTH 0x0B21
#define GL_LINK_STATUS 0x8B82
#define GL_LOSE_CONTEXT_ON_RESET 0x8252
#define GL_LOW_FLOAT 0x8DF0
#define GL_LOW_INT 0x8DF3
#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D
#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD
#define GL_MAX_RENDERBUFFER_SIZE 0x84E8
#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872
#define GL_MAX_TEXTURE_SIZE 0x0D33
#define GL_MAX_VARYING_VECTORS 0x8DFC
#define GL_MAX_VERTEX_ATTRIBS 0x8869
#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C
#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB
#define GL_MAX_VIEWPORT_DIMS 0x0D3A
#define GL_MEDIUM_FLOAT 0x8DF1
#define GL_MEDIUM_INT 0x8DF4
#define GL_MIRRORED_REPEAT 0x8370
#define GL_NEAREST 0x2600
#define GL_NEAREST_MIPMAP_LINEAR 0x2702
#define GL_NEAREST_MIPMAP_NEAREST 0x2700
#define GL_NEVER 0x0200
#define GL_NICEST 0x1102
#define GL_NONE 0
#define GL_NOTEQUAL 0x0205
#define GL_NO_ERROR 0
#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
#define GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE
#define GL_ONE 1
#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004
#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002
#define GL_ONE_MINUS_DST_ALPHA 0x0305
#define GL_ONE_MINUS_DST_COLOR 0x0307
#define GL_ONE_MINUS_SRC_ALPHA 0x0303
#define GL_ONE_MINUS_SRC_COLOR 0x0301
#define GL_OUT_OF_MEMORY 0x0505
#define GL_PACK_ALIGNMENT 0x0D05
#define GL_POINTS 0x0000
#define GL_POLYGON_OFFSET_FACTOR 0x8038
#define GL_POLYGON_OFFSET_FILL 0x8037
#define GL_POLYGON_OFFSET_UNITS 0x2A00
#define GL_PROGRAM_BINARY_FORMATS 0x87FF
#define GL_PVRIC_SIGNATURE_MISMATCH_IMG 0x8EA3
#define GL_R8 0x8229
#define GL_RED 0x1903
#define GL_RED_BITS 0x0D52
#define GL_RENDERBUFFER 0x8D41
#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53
#define GL_RENDERBUFFER_BINDING 0x8CA7
#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52
#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54
#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51
#define GL_RENDERBUFFER_HEIGHT 0x8D43
#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44
#define GL_RENDERBUFFER_RED_SIZE 0x8D50
#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55
#define GL_RENDERBUFFER_WIDTH 0x8D42
#define GL_RENDERER 0x1F01
#define GL_REPEAT 0x2901
#define GL_REPLACE 0x1E01
#define GL_RESET_NOTIFICATION_STRATEGY 0x8256
#define GL_RG 0x8227
#define GL_RG8 0x822B
#define GL_RGB 0x1907
#define GL_RGB565 0x8D62
#define GL_RGB5_A1 0x8057
#define GL_RGB8 0x8051
#define GL_RGB8_OES 0x8051
#define GL_RGBA 0x1908
#define GL_RGBA4 0x8056
#define GL_RGBA8 0x8058
#define GL_RGBA8_OES 0x8058
#define GL_SAMPLER_2D 0x8B5E
#define GL_SAMPLES 0x80A9
#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E
#define GL_SAMPLE_BUFFERS 0x80A8
#define GL_SAMPLE_COVERAGE 0x80A0
#define GL_SAMPLE_COVERAGE_INVERT 0x80AB
#define GL_SAMPLE_COVERAGE_VALUE 0x80AA
#define GL_SCISSOR_BOX 0x0C10
#define GL_SCISSOR_TEST 0x0C11
#define GL_SHADING_LANGUAGE_VERSION 0x8B8C
#define GL_SHORT 0x1402
#define GL_SRC_ALPHA 0x0302
#define GL_SRC_ALPHA_SATURATE 0x0308
#define GL_SRC_COLOR 0x0300
#define GL_STATIC_DRAW 0x88E4
#define GL_STENCIL_ATTACHMENT 0x8D20
#define GL_STENCIL_BACK_FAIL 0x8801
#define GL_STENCIL_BACK_FUNC 0x8800
#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802
#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803
#define GL_STENCIL_BACK_REF 0x8CA3
#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4
#define GL_STENCIL_BACK_WRITEMASK 0x8CA5
#define GL_STENCIL_BITS 0x0D57
#define GL_STENCIL_BUFFER_BIT 0x00000400
#define GL_STENCIL_CLEAR_VALUE 0x0B91
#define GL_STENCIL_FAIL 0x0B94
#define GL_STENCIL_FUNC 0x0B92
#define GL_STENCIL_INDEX8 0x8D48
#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95
#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96
#define GL_STENCIL_REF 0x0B97
#define GL_STENCIL_TEST 0x0B90
#define GL_STENCIL_VALUE_MASK 0x0B93
#define GL_STENCIL_WRITEMASK 0x0B98
#define GL_STREAM_DRAW 0x88E0
#define GL_SUBPIXEL_BITS 0x0D50
#define GL_TEXTURE 0x1702
#define GL_TEXTURE0 0x84C0
#define GL_TEXTURE1 0x84C1
#define GL_TEXTURE10 0x84CA
#define GL_TEXTURE11 0x84CB
#define GL_TEXTURE12 0x84CC
#define GL_TEXTURE13 0x84CD
#define GL_TEXTURE14 0x84CE
#define GL_TEXTURE15 0x84CF
#define GL_TEXTURE16 0x84D0
#define GL_TEXTURE17 0x84D1
#define GL_TEXTURE18 0x84D2
#define GL_TEXTURE19 0x84D3
#define GL_TEXTURE2 0x84C2
#define GL_TEXTURE20 0x84D4
#define GL_TEXTURE21 0x84D5
#define GL_TEXTURE22 0x84D6
#define GL_TEXTURE23 0x84D7
#define GL_TEXTURE24 0x84D8
#define GL_TEXTURE25 0x84D9
#define GL_TEXTURE26 0x84DA
#define GL_TEXTURE27 0x84DB
#define GL_TEXTURE28 0x84DC
#define GL_TEXTURE29 0x84DD
#define GL_TEXTURE3 0x84C3
#define GL_TEXTURE30 0x84DE
#define GL_TEXTURE31 0x84DF
#define GL_TEXTURE4 0x84C4
#define GL_TEXTURE5 0x84C5
#define GL_TEXTURE6 0x84C6
#define GL_TEXTURE7 0x84C7
#define GL_TEXTURE8 0x84C8
#define GL_TEXTURE9 0x84C9
#define GL_TEXTURE_2D 0x0DE1
#define GL_TEXTURE_BINDING_2D 0x8069
#define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F
#define GL_TEXTURE_MAG_FILTER 0x2800
#define GL_TEXTURE_MIN_FILTER 0x2801
#define GL_TEXTURE_WRAP_S 0x2802
#define GL_TEXTURE_WRAP_T 0x2803
#define GL_TRIANGLES 0x0004
#define GL_TRIANGLE_FAN 0x0006
#define GL_TRIANGLE_STRIP 0x0005
#define GL_TRP_ERROR_CONTEXT_RESET_IMG 0x8EA1
#define GL_TRP_IMG 0x8EA0
#define GL_TRP_UNSUPPORTED_CONTEXT_IMG 0x8EA2
#define GL_TRUE 1
#define GL_UNKNOWN_CONTEXT_RESET 0x8255
#define GL_UNPACK_ALIGNMENT 0x0CF5
#define GL_UNSIGNED_BYTE 0x1401
#define GL_UNSIGNED_INT 0x1405
#define GL_UNSIGNED_SHORT 0x1403
#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033
#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034
#define GL_UNSIGNED_SHORT_5_6_5 0x8363
#define GL_VENDOR 0x1F00
#define GL_VERSION 0x1F02
#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F
#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622
#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A
#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645
#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623
#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624
#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625
#define GL_VIEWPORT 0x0BA2
#define GL_ZERO 0
#include <khrplatform.h>
typedef unsigned int GLenum;
typedef unsigned char GLboolean;
typedef unsigned int GLbitfield;
typedef void GLvoid;
typedef khronos_int8_t GLbyte;
typedef khronos_uint8_t GLubyte;
typedef khronos_int16_t GLshort;
typedef khronos_uint16_t GLushort;
typedef int GLint;
typedef unsigned int GLuint;
typedef khronos_int32_t GLclampx;
typedef int GLsizei;
typedef khronos_float_t GLfloat;
typedef khronos_float_t GLclampf;
typedef double GLdouble;
typedef double GLclampd;
typedef void* GLeglClientBufferEXT;
typedef void* GLeglImageOES;
typedef char GLchar;
typedef char GLcharARB;
#ifdef __APPLE__
typedef void* GLhandleARB;
#else
typedef unsigned int GLhandleARB;
#endif
typedef khronos_uint16_t GLhalf;
typedef khronos_uint16_t GLhalfARB;
typedef khronos_int32_t GLfixed;
#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ > 1060)
typedef khronos_intptr_t GLintptr;
#else
typedef khronos_intptr_t GLintptr;
#endif
#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ > 1060)
typedef khronos_intptr_t GLintptrARB;
#else
typedef khronos_intptr_t GLintptrARB;
#endif
#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ > 1060)
typedef khronos_ssize_t GLsizeiptr;
#else
typedef khronos_ssize_t GLsizeiptr;
#endif
#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ > 1060)
typedef khronos_ssize_t GLsizeiptrARB;
#else
typedef khronos_ssize_t GLsizeiptrARB;
#endif
typedef khronos_int64_t GLint64;
typedef khronos_int64_t GLint64EXT;
typedef khronos_uint64_t GLuint64;
typedef khronos_uint64_t GLuint64EXT;
typedef struct __GLsync* GLsync;
struct _cl_context;
struct _cl_event;
typedef void (GLAD_API_PTR* GLDEBUGPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, const void* userParam);
typedef void (GLAD_API_PTR* GLDEBUGPROCARB)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, const void* userParam);
typedef void (GLAD_API_PTR* GLDEBUGPROCKHR)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, const void* userParam);
typedef void (GLAD_API_PTR* GLDEBUGPROCAMD)(GLuint id, GLenum category, GLenum severity, GLsizei length, const GLchar* message, void* userParam);
typedef unsigned short GLhalfNV;
typedef GLintptr GLvdpauSurfaceNV;
typedef void (GLAD_API_PTR* GLVULKANPROCNV)(void);
#define GL_SC_VERSION_2_0 1
#define GL_EXT_texture_compression_s3tc 1
#define GL_IMG_pvric_end_to_end_signature 1
#define GL_IMG_tile_region_protection 1
#define GL_OES_depth24 1
#define GL_OES_depth32 1
#define GL_OES_rgb8_rgba8 1
#define GL_OES_standard_derivatives 1
typedef void (GLAD_API_PTR* PFNGLACTIVETEXTUREPROC)(GLenum texture);
typedef void (GLAD_API_PTR* PFNGLBINDBUFFERPROC)(GLenum target, GLuint buffer);
typedef void (GLAD_API_PTR* PFNGLBINDFRAMEBUFFERPROC)(GLenum target, GLuint framebuffer);
typedef void (GLAD_API_PTR* PFNGLBINDRENDERBUFFERPROC)(GLenum target, GLuint renderbuffer);
typedef void (GLAD_API_PTR* PFNGLBINDTEXTUREPROC)(GLenum target, GLuint texture);
typedef void (GLAD_API_PTR* PFNGLBLENDCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
typedef void (GLAD_API_PTR* PFNGLBLENDEQUATIONPROC)(GLenum mode);
typedef void (GLAD_API_PTR* PFNGLBLENDEQUATIONSEPARATEPROC)(GLenum modeRGB, GLenum modeAlpha);
typedef void (GLAD_API_PTR* PFNGLBLENDFUNCPROC)(GLenum sfactor, GLenum dfactor);
typedef void (GLAD_API_PTR* PFNGLBLENDFUNCSEPARATEPROC)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
typedef void (GLAD_API_PTR* PFNGLBUFFERDATAPROC)(GLenum target, GLsizeiptr size, const void* data, GLenum usage);
typedef void (GLAD_API_PTR* PFNGLBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, GLsizeiptr size, const void* data);
typedef GLenum(GLAD_API_PTR* PFNGLCHECKFRAMEBUFFERSTATUSPROC)(GLenum target);
typedef void (GLAD_API_PTR* PFNGLCLEARPROC)(GLbitfield mask);
typedef void (GLAD_API_PTR* PFNGLCLEARCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
typedef void (GLAD_API_PTR* PFNGLCLEARDEPTHFPROC)(GLfloat d);
typedef void (GLAD_API_PTR* PFNGLCLEARSTENCILPROC)(GLint s);
typedef void (GLAD_API_PTR* PFNGLCOLORMASKPROC)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
typedef void (GLAD_API_PTR* PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void* data);
typedef GLuint(GLAD_API_PTR* PFNGLCREATEPROGRAMPROC)(void);
typedef void (GLAD_API_PTR* PFNGLCULLFACEPROC)(GLenum mode);
typedef void (GLAD_API_PTR* PFNGLDEPTHFUNCPROC)(GLenum func);
typedef void (GLAD_API_PTR* PFNGLDEPTHMASKPROC)(GLboolean flag);
typedef void (GLAD_API_PTR* PFNGLDEPTHRANGEFPROC)(GLfloat n, GLfloat f);
typedef void (GLAD_API_PTR* PFNGLDISABLEPROC)(GLenum cap);
typedef void (GLAD_API_PTR* PFNGLDISABLEVERTEXATTRIBARRAYPROC)(GLuint index);
typedef void (GLAD_API_PTR* PFNGLDRAWARRAYSPROC)(GLenum mode, GLint first, GLsizei count);
typedef void (GLAD_API_PTR* PFNGLDRAWRANGEELEMENTSPROC)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void* indices);
typedef void (GLAD_API_PTR* PFNGLENABLEPROC)(GLenum cap);
typedef void (GLAD_API_PTR* PFNGLENABLEVERTEXATTRIBARRAYPROC)(GLuint index);
typedef void (GLAD_API_PTR* PFNGLFINISHPROC)(void);
typedef void (GLAD_API_PTR* PFNGLFLUSHPROC)(void);
typedef void (GLAD_API_PTR* PFNGLFRAMEBUFFERRENDERBUFFERPROC)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
typedef void (GLAD_API_PTR* PFNGLFRAMEBUFFERTEXTURE2DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
typedef void (GLAD_API_PTR* PFNGLFRONTFACEPROC)(GLenum mode);
typedef void (GLAD_API_PTR* PFNGLGENBUFFERSPROC)(GLsizei n, GLuint* buffers);
typedef void (GLAD_API_PTR* PFNGLGENFRAMEBUFFERSPROC)(GLsizei n, GLuint* framebuffers);
typedef void (GLAD_API_PTR* PFNGLGENRENDERBUFFERSPROC)(GLsizei n, GLuint* renderbuffers);
typedef void (GLAD_API_PTR* PFNGLGENTEXTURESPROC)(GLsizei n, GLuint* textures);
typedef void (GLAD_API_PTR* PFNGLGENERATEMIPMAPPROC)(GLenum target);
typedef GLint(GLAD_API_PTR* PFNGLGETATTRIBLOCATIONPROC)(GLuint program, const GLchar* name);
typedef void (GLAD_API_PTR* PFNGLGETBOOLEANVPROC)(GLenum pname, GLboolean* data);
typedef void (GLAD_API_PTR* PFNGLGETBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint* params);
typedef GLenum(GLAD_API_PTR* PFNGLGETERRORPROC)(void);
typedef void (GLAD_API_PTR* PFNGLGETFLOATVPROC)(GLenum pname, GLfloat* data);
typedef void (GLAD_API_PTR* PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)(GLenum target, GLenum attachment, GLenum pname, GLint* params);
typedef GLenum(GLAD_API_PTR* PFNGLGETGRAPHICSRESETSTATUSPROC)(void);
typedef void (GLAD_API_PTR* PFNGLGETINTEGERVPROC)(GLenum pname, GLint* data);
typedef void (GLAD_API_PTR* PFNGLGETPROGRAMIVPROC)(GLuint program, GLenum pname, GLint* params);
typedef void (GLAD_API_PTR* PFNGLGETRENDERBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint* params);
typedef const GLubyte* (GLAD_API_PTR* PFNGLGETSTRINGPROC)(GLenum name);
typedef void (GLAD_API_PTR* PFNGLGETTEXPARAMETERFVPROC)(GLenum target, GLenum pname, GLfloat* params);
typedef void (GLAD_API_PTR* PFNGLGETTEXPARAMETERIVPROC)(GLenum target, GLenum pname, GLint* params);
typedef GLint(GLAD_API_PTR* PFNGLGETUNIFORMLOCATIONPROC)(GLuint program, const GLchar* name);
typedef void (GLAD_API_PTR* PFNGLGETVERTEXATTRIBPOINTERVPROC)(GLuint index, GLenum pname, void** pointer);
typedef void (GLAD_API_PTR* PFNGLGETVERTEXATTRIBFVPROC)(GLuint index, GLenum pname, GLfloat* params);
typedef void (GLAD_API_PTR* PFNGLGETVERTEXATTRIBIVPROC)(GLuint index, GLenum pname, GLint* params);
typedef void (GLAD_API_PTR* PFNGLGETNUNIFORMFVPROC)(GLuint program, GLint location, GLsizei bufSize, GLfloat* params);
typedef void (GLAD_API_PTR* PFNGLGETNUNIFORMIVPROC)(GLuint program, GLint location, GLsizei bufSize, GLint* params);
typedef void (GLAD_API_PTR* PFNGLHINTPROC)(GLenum target, GLenum mode);
typedef GLboolean(GLAD_API_PTR* PFNGLISENABLEDPROC)(GLenum cap);
typedef void (GLAD_API_PTR* PFNGLLINEWIDTHPROC)(GLfloat width);
typedef void (GLAD_API_PTR* PFNGLPIXELSTOREIPROC)(GLenum pname, GLint param);
typedef void (GLAD_API_PTR* PFNGLPOLYGONOFFSETPROC)(GLfloat factor, GLfloat units);
typedef void (GLAD_API_PTR* PFNGLPROGRAMBINARYPROC)(GLuint program, GLenum binaryFormat, const void* binary, GLsizei length);
typedef void (GLAD_API_PTR* PFNGLREADNPIXELSPROC)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void* data);
typedef void (GLAD_API_PTR* PFNGLRENDERBUFFERSTORAGEPROC)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
typedef void (GLAD_API_PTR* PFNGLSAMPLECOVERAGEPROC)(GLfloat value, GLboolean invert);
typedef void (GLAD_API_PTR* PFNGLSCISSORPROC)(GLint x, GLint y, GLsizei width, GLsizei height);
typedef void (GLAD_API_PTR* PFNGLSTENCILFUNCPROC)(GLenum func, GLint ref, GLuint mask);
typedef void (GLAD_API_PTR* PFNGLSTENCILFUNCSEPARATEPROC)(GLenum face, GLenum func, GLint ref, GLuint mask);
typedef void (GLAD_API_PTR* PFNGLSTENCILMASKPROC)(GLuint mask);
typedef void (GLAD_API_PTR* PFNGLSTENCILMASKSEPARATEPROC)(GLenum face, GLuint mask);
typedef void (GLAD_API_PTR* PFNGLSTENCILOPPROC)(GLenum fail, GLenum zfail, GLenum zpass);
typedef void (GLAD_API_PTR* PFNGLSTENCILOPSEPARATEPROC)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
typedef void (GLAD_API_PTR* PFNGLTEXPARAMETERFPROC)(GLenum target, GLenum pname, GLfloat param);
typedef void (GLAD_API_PTR* PFNGLTEXPARAMETERFVPROC)(GLenum target, GLenum pname, const GLfloat* params);
typedef void (GLAD_API_PTR* PFNGLTEXPARAMETERIPROC)(GLenum target, GLenum pname, GLint param);
typedef void (GLAD_API_PTR* PFNGLTEXPARAMETERIVPROC)(GLenum target, GLenum pname, const GLint* params);
typedef void (GLAD_API_PTR* PFNGLTEXSTORAGE2DPROC)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
typedef void (GLAD_API_PTR* PFNGLTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels);
typedef void (GLAD_API_PTR* PFNGLUNIFORM1FPROC)(GLint location, GLfloat v0);
typedef void (GLAD_API_PTR* PFNGLUNIFORM1FVPROC)(GLint location, GLsizei count, const GLfloat* value);
typedef void (GLAD_API_PTR* PFNGLUNIFORM1IPROC)(GLint location, GLint v0);
typedef void (GLAD_API_PTR* PFNGLUNIFORM1IVPROC)(GLint location, GLsizei count, const GLint* value);
typedef void (GLAD_API_PTR* PFNGLUNIFORM2FPROC)(GLint location, GLfloat v0, GLfloat v1);
typedef void (GLAD_API_PTR* PFNGLUNIFORM2FVPROC)(GLint location, GLsizei count, const GLfloat* value);
typedef void (GLAD_API_PTR* PFNGLUNIFORM2IPROC)(GLint location, GLint v0, GLint v1);
typedef void (GLAD_API_PTR* PFNGLUNIFORM2IVPROC)(GLint location, GLsizei count, const GLint* value);
typedef void (GLAD_API_PTR* PFNGLUNIFORM3FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
typedef void (GLAD_API_PTR* PFNGLUNIFORM3FVPROC)(GLint location, GLsizei count, const GLfloat* value);
typedef void (GLAD_API_PTR* PFNGLUNIFORM3IPROC)(GLint location, GLint v0, GLint v1, GLint v2);
typedef void (GLAD_API_PTR* PFNGLUNIFORM3IVPROC)(GLint location, GLsizei count, const GLint* value);
typedef void (GLAD_API_PTR* PFNGLUNIFORM4FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
typedef void (GLAD_API_PTR* PFNGLUNIFORM4FVPROC)(GLint location, GLsizei count, const GLfloat* value);
typedef void (GLAD_API_PTR* PFNGLUNIFORM4IPROC)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
typedef void (GLAD_API_PTR* PFNGLUNIFORM4IVPROC)(GLint location, GLsizei count, const GLint* value);
typedef void (GLAD_API_PTR* PFNGLUNIFORMMATRIX2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
typedef void (GLAD_API_PTR* PFNGLUNIFORMMATRIX3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
typedef void (GLAD_API_PTR* PFNGLUNIFORMMATRIX4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
typedef void (GLAD_API_PTR* PFNGLUSEPROGRAMPROC)(GLuint program);
typedef void (GLAD_API_PTR* PFNGLVERTEXATTRIB1FPROC)(GLuint index, GLfloat x);
typedef void (GLAD_API_PTR* PFNGLVERTEXATTRIB1FVPROC)(GLuint index, const GLfloat* v);
typedef void (GLAD_API_PTR* PFNGLVERTEXATTRIB2FPROC)(GLuint index, GLfloat x, GLfloat y);
typedef void (GLAD_API_PTR* PFNGLVERTEXATTRIB2FVPROC)(GLuint index, const GLfloat* v);
typedef void (GLAD_API_PTR* PFNGLVERTEXATTRIB3FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z);
typedef void (GLAD_API_PTR* PFNGLVERTEXATTRIB3FVPROC)(GLuint index, const GLfloat* v);
typedef void (GLAD_API_PTR* PFNGLVERTEXATTRIB4FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
typedef void (GLAD_API_PTR* PFNGLVERTEXATTRIB4FVPROC)(GLuint index, const GLfloat* v);
typedef void (GLAD_API_PTR* PFNGLVERTEXATTRIBPOINTERPROC)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* pointer);
typedef void (GLAD_API_PTR* PFNGLVIEWPORTPROC)(GLint x, GLint y, GLsizei width, GLsizei height);
typedef struct GladGLSC2Context {
void* userptr;
int SC_VERSION_2_0;
int EXT_texture_compression_s3tc;
int IMG_pvric_end_to_end_signature;
int IMG_tile_region_protection;
int OES_depth24;
int OES_depth32;
int OES_rgb8_rgba8;
int OES_standard_derivatives;
PFNGLACTIVETEXTUREPROC ActiveTexture;
PFNGLBINDBUFFERPROC BindBuffer;
PFNGLBINDFRAMEBUFFERPROC BindFramebuffer;
PFNGLBINDRENDERBUFFERPROC BindRenderbuffer;
PFNGLBINDTEXTUREPROC BindTexture;
PFNGLBLENDCOLORPROC BlendColor;
PFNGLBLENDEQUATIONPROC BlendEquation;
PFNGLBLENDEQUATIONSEPARATEPROC BlendEquationSeparate;
PFNGLBLENDFUNCPROC BlendFunc;
PFNGLBLENDFUNCSEPARATEPROC BlendFuncSeparate;
PFNGLBUFFERDATAPROC BufferData;
PFNGLBUFFERSUBDATAPROC BufferSubData;
PFNGLCHECKFRAMEBUFFERSTATUSPROC CheckFramebufferStatus;
PFNGLCLEARPROC Clear;
PFNGLCLEARCOLORPROC ClearColor;
PFNGLCLEARDEPTHFPROC ClearDepthf;
PFNGLCLEARSTENCILPROC ClearStencil;
PFNGLCOLORMASKPROC ColorMask;
PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC CompressedTexSubImage2D;
PFNGLCREATEPROGRAMPROC CreateProgram;
PFNGLCULLFACEPROC CullFace;
PFNGLDEPTHFUNCPROC DepthFunc;
PFNGLDEPTHMASKPROC DepthMask;
PFNGLDEPTHRANGEFPROC DepthRangef;
PFNGLDISABLEPROC Disable;
PFNGLDISABLEVERTEXATTRIBARRAYPROC DisableVertexAttribArray;
PFNGLDRAWARRAYSPROC DrawArrays;
PFNGLDRAWRANGEELEMENTSPROC DrawRangeElements;
PFNGLENABLEPROC Enable;
PFNGLENABLEVERTEXATTRIBARRAYPROC EnableVertexAttribArray;
PFNGLFINISHPROC Finish;
PFNGLFLUSHPROC Flush;
PFNGLFRAMEBUFFERRENDERBUFFERPROC FramebufferRenderbuffer;
PFNGLFRAMEBUFFERTEXTURE2DPROC FramebufferTexture2D;
PFNGLFRONTFACEPROC FrontFace;
PFNGLGENBUFFERSPROC GenBuffers;
PFNGLGENFRAMEBUFFERSPROC GenFramebuffers;
PFNGLGENRENDERBUFFERSPROC GenRenderbuffers;
PFNGLGENTEXTURESPROC GenTextures;
PFNGLGENERATEMIPMAPPROC GenerateMipmap;
PFNGLGETATTRIBLOCATIONPROC GetAttribLocation;
PFNGLGETBOOLEANVPROC GetBooleanv;
PFNGLGETBUFFERPARAMETERIVPROC GetBufferParameteriv;
PFNGLGETERRORPROC GetError;
PFNGLGETFLOATVPROC GetFloatv;
PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC GetFramebufferAttachmentParameteriv;
PFNGLGETGRAPHICSRESETSTATUSPROC GetGraphicsResetStatus;
PFNGLGETINTEGERVPROC GetIntegerv;
PFNGLGETPROGRAMIVPROC GetProgramiv;
PFNGLGETRENDERBUFFERPARAMETERIVPROC GetRenderbufferParameteriv;
PFNGLGETSTRINGPROC GetString;
PFNGLGETTEXPARAMETERFVPROC GetTexParameterfv;
PFNGLGETTEXPARAMETERIVPROC GetTexParameteriv;
PFNGLGETUNIFORMLOCATIONPROC GetUniformLocation;
PFNGLGETVERTEXATTRIBPOINTERVPROC GetVertexAttribPointerv;
PFNGLGETVERTEXATTRIBFVPROC GetVertexAttribfv;
PFNGLGETVERTEXATTRIBIVPROC GetVertexAttribiv;
PFNGLGETNUNIFORMFVPROC GetnUniformfv;
PFNGLGETNUNIFORMIVPROC GetnUniformiv;
PFNGLHINTPROC Hint;
PFNGLISENABLEDPROC IsEnabled;
PFNGLLINEWIDTHPROC LineWidth;
PFNGLPIXELSTOREIPROC PixelStorei;
PFNGLPOLYGONOFFSETPROC PolygonOffset;
PFNGLPROGRAMBINARYPROC ProgramBinary;
PFNGLREADNPIXELSPROC ReadnPixels;
PFNGLRENDERBUFFERSTORAGEPROC RenderbufferStorage;
PFNGLSAMPLECOVERAGEPROC SampleCoverage;
PFNGLSCISSORPROC Scissor;
PFNGLSTENCILFUNCPROC StencilFunc;
PFNGLSTENCILFUNCSEPARATEPROC StencilFuncSeparate;
PFNGLSTENCILMASKPROC StencilMask;
PFNGLSTENCILMASKSEPARATEPROC StencilMaskSeparate;
PFNGLSTENCILOPPROC StencilOp;
PFNGLSTENCILOPSEPARATEPROC StencilOpSeparate;
PFNGLTEXPARAMETERFPROC TexParameterf;
PFNGLTEXPARAMETERFVPROC TexParameterfv;
PFNGLTEXPARAMETERIPROC TexParameteri;
PFNGLTEXPARAMETERIVPROC TexParameteriv;
PFNGLTEXSTORAGE2DPROC TexStorage2D;
PFNGLTEXSUBIMAGE2DPROC TexSubImage2D;
PFNGLUNIFORM1FPROC Uniform1f;
PFNGLUNIFORM1FVPROC Uniform1fv;
PFNGLUNIFORM1IPROC Uniform1i;
PFNGLUNIFORM1IVPROC Uniform1iv;
PFNGLUNIFORM2FPROC Uniform2f;
PFNGLUNIFORM2FVPROC Uniform2fv;
PFNGLUNIFORM2IPROC Uniform2i;
PFNGLUNIFORM2IVPROC Uniform2iv;
PFNGLUNIFORM3FPROC Uniform3f;
PFNGLUNIFORM3FVPROC Uniform3fv;
PFNGLUNIFORM3IPROC Uniform3i;
PFNGLUNIFORM3IVPROC Uniform3iv;
PFNGLUNIFORM4FPROC Uniform4f;
PFNGLUNIFORM4FVPROC Uniform4fv;
PFNGLUNIFORM4IPROC Uniform4i;
PFNGLUNIFORM4IVPROC Uniform4iv;
PFNGLUNIFORMMATRIX2FVPROC UniformMatrix2fv;
PFNGLUNIFORMMATRIX3FVPROC UniformMatrix3fv;
PFNGLUNIFORMMATRIX4FVPROC UniformMatrix4fv;
PFNGLUSEPROGRAMPROC UseProgram;
PFNGLVERTEXATTRIB1FPROC VertexAttrib1f;
PFNGLVERTEXATTRIB1FVPROC VertexAttrib1fv;
PFNGLVERTEXATTRIB2FPROC VertexAttrib2f;
PFNGLVERTEXATTRIB2FVPROC VertexAttrib2fv;
PFNGLVERTEXATTRIB3FPROC VertexAttrib3f;
PFNGLVERTEXATTRIB3FVPROC VertexAttrib3fv;
PFNGLVERTEXATTRIB4FPROC VertexAttrib4f;
PFNGLVERTEXATTRIB4FVPROC VertexAttrib4fv;
PFNGLVERTEXATTRIBPOINTERPROC VertexAttribPointer;
PFNGLVIEWPORTPROC Viewport;
void* glad_loader_handle;
} GladGLSC2Context;
GLAD_API_CALL int gladLoadGLSC2ContextUserPtr(GladGLSC2Context* context, GLADuserptrloadfunc load, void* userptr);
GLAD_API_CALL int gladLoadGLSC2Context(GladGLSC2Context* context, GLADloadfunc load);
#ifdef __cplusplus
}
#endif
#endif
@@ -30,7 +30,7 @@
#define GLAD_WGL_H_
#include <windows.h>
#include <glad/gl.h>
#include <glad_gl.h>
#define GLAD_WGL
#define GLAD_OPTION_WGL_LOADER
@@ -178,7 +178,7 @@ extern "C" {
*
* @ingroup native
*/
GLFWAPI const char* glfwGetWin32Adapter(GLFWmonitor* monitor);
SSCAPI const char* glfwGetWin32Adapter(GLFWmonitor* monitor);
/*! @brief Returns the display device name of the specified monitor.
*
@@ -195,7 +195,7 @@ GLFWAPI const char* glfwGetWin32Adapter(GLFWmonitor* monitor);
*
* @ingroup native
*/
GLFWAPI const char* glfwGetWin32Monitor(GLFWmonitor* monitor);
SSCAPI const char* glfwGetWin32Monitor(GLFWmonitor* monitor);
/*! @brief Returns the `HWND` of the specified window.
*
@@ -219,7 +219,7 @@ GLFWAPI const char* glfwGetWin32Monitor(GLFWmonitor* monitor);
*
* @ingroup native
*/
GLFWAPI HWND glfwGetWin32Window(GLFWwindow* window);
SSCAPI HWND glfwGetWin32Window(GLFWwindow* window);
#endif
#if defined(GLFW_EXPOSE_NATIVE_WGL)
@@ -246,7 +246,7 @@ GLFWAPI HWND glfwGetWin32Window(GLFWwindow* window);
*
* @ingroup native
*/
GLFWAPI HGLRC glfwGetWGLContext(GLFWwindow* window);
SSCAPI HGLRC glfwGetWGLContext(GLFWwindow* window);
#endif
#if defined(GLFW_EXPOSE_NATIVE_COCOA)
@@ -264,7 +264,7 @@ GLFWAPI HGLRC glfwGetWGLContext(GLFWwindow* window);
*
* @ingroup native
*/
GLFWAPI CGDirectDisplayID glfwGetCocoaMonitor(GLFWmonitor* monitor);
SSCAPI CGDirectDisplayID glfwGetCocoaMonitor(GLFWmonitor* monitor);
/*! @brief Returns the `NSWindow` of the specified window.
*
@@ -280,7 +280,7 @@ GLFWAPI CGDirectDisplayID glfwGetCocoaMonitor(GLFWmonitor* monitor);
*
* @ingroup native
*/
GLFWAPI id glfwGetCocoaWindow(GLFWwindow* window);
SSCAPI id glfwGetCocoaWindow(GLFWwindow* window);
#endif
#if defined(GLFW_EXPOSE_NATIVE_NSGL)
@@ -299,7 +299,7 @@ GLFWAPI id glfwGetCocoaWindow(GLFWwindow* window);
*
* @ingroup native
*/
GLFWAPI id glfwGetNSGLContext(GLFWwindow* window);
SSCAPI id glfwGetNSGLContext(GLFWwindow* window);
#endif
#if defined(GLFW_EXPOSE_NATIVE_X11)
@@ -317,7 +317,7 @@ GLFWAPI id glfwGetNSGLContext(GLFWwindow* window);
*
* @ingroup native
*/
GLFWAPI Display* glfwGetX11Display(void);
SSCAPI Display* glfwGetX11Display(void);
/*! @brief Returns the `RRCrtc` of the specified monitor.
*
@@ -333,7 +333,7 @@ GLFWAPI Display* glfwGetX11Display(void);
*
* @ingroup native
*/
GLFWAPI RRCrtc glfwGetX11Adapter(GLFWmonitor* monitor);
SSCAPI RRCrtc glfwGetX11Adapter(GLFWmonitor* monitor);
/*! @brief Returns the `RROutput` of the specified monitor.
*
@@ -349,7 +349,7 @@ GLFWAPI RRCrtc glfwGetX11Adapter(GLFWmonitor* monitor);
*
* @ingroup native
*/
GLFWAPI RROutput glfwGetX11Monitor(GLFWmonitor* monitor);
SSCAPI RROutput glfwGetX11Monitor(GLFWmonitor* monitor);
/*! @brief Returns the `Window` of the specified window.
*
@@ -365,7 +365,7 @@ GLFWAPI RROutput glfwGetX11Monitor(GLFWmonitor* monitor);
*
* @ingroup native
*/
GLFWAPI Window glfwGetX11Window(GLFWwindow* window);
SSCAPI Window glfwGetX11Window(GLFWwindow* window);
/*! @brief Sets the current primary selection to the specified string.
*
@@ -387,7 +387,7 @@ GLFWAPI Window glfwGetX11Window(GLFWwindow* window);
*
* @ingroup native
*/
GLFWAPI void glfwSetX11SelectionString(const char* string);
SSCAPI void glfwSetX11SelectionString(const char* string);
/*! @brief Returns the contents of the current primary selection as a string.
*
@@ -415,7 +415,7 @@ GLFWAPI void glfwSetX11SelectionString(const char* string);
*
* @ingroup native
*/
GLFWAPI const char* glfwGetX11SelectionString(void);
SSCAPI const char* glfwGetX11SelectionString(void);
#endif
#if defined(GLFW_EXPOSE_NATIVE_GLX)
@@ -434,7 +434,7 @@ GLFWAPI const char* glfwGetX11SelectionString(void);
*
* @ingroup native
*/
GLFWAPI GLXContext glfwGetGLXContext(GLFWwindow* window);
SSCAPI GLXContext glfwGetGLXContext(GLFWwindow* window);
/*! @brief Returns the `GLXWindow` of the specified window.
*
@@ -451,7 +451,7 @@ GLFWAPI GLXContext glfwGetGLXContext(GLFWwindow* window);
*
* @ingroup native
*/
GLFWAPI GLXWindow glfwGetGLXWindow(GLFWwindow* window);
SSCAPI GLXWindow glfwGetGLXWindow(GLFWwindow* window);
#endif
#if defined(GLFW_EXPOSE_NATIVE_WAYLAND)
@@ -469,7 +469,7 @@ GLFWAPI GLXWindow glfwGetGLXWindow(GLFWwindow* window);
*
* @ingroup native
*/
GLFWAPI struct wl_display* glfwGetWaylandDisplay(void);
SSCAPI struct wl_display* glfwGetWaylandDisplay(void);
/*! @brief Returns the `struct wl_output*` of the specified monitor.
*
@@ -485,7 +485,7 @@ GLFWAPI struct wl_display* glfwGetWaylandDisplay(void);
*
* @ingroup native
*/
GLFWAPI struct wl_output* glfwGetWaylandMonitor(GLFWmonitor* monitor);
SSCAPI struct wl_output* glfwGetWaylandMonitor(GLFWmonitor* monitor);
/*! @brief Returns the main `struct wl_surface*` of the specified window.
*
@@ -501,7 +501,7 @@ GLFWAPI struct wl_output* glfwGetWaylandMonitor(GLFWmonitor* monitor);
*
* @ingroup native
*/
GLFWAPI struct wl_surface* glfwGetWaylandWindow(GLFWwindow* window);
SSCAPI struct wl_surface* glfwGetWaylandWindow(GLFWwindow* window);
#endif
#if defined(GLFW_EXPOSE_NATIVE_EGL)
@@ -522,7 +522,7 @@ GLFWAPI struct wl_surface* glfwGetWaylandWindow(GLFWwindow* window);
*
* @ingroup native
*/
GLFWAPI EGLDisplay glfwGetEGLDisplay(void);
SSCAPI EGLDisplay glfwGetEGLDisplay(void);
/*! @brief Returns the `EGLContext` of the specified window.
*
@@ -539,7 +539,7 @@ GLFWAPI EGLDisplay glfwGetEGLDisplay(void);
*
* @ingroup native
*/
GLFWAPI EGLContext glfwGetEGLContext(GLFWwindow* window);
SSCAPI EGLContext glfwGetEGLContext(GLFWwindow* window);
/*! @brief Returns the `EGLSurface` of the specified window.
*
@@ -556,7 +556,7 @@ GLFWAPI EGLContext glfwGetEGLContext(GLFWwindow* window);
*
* @ingroup native
*/
GLFWAPI EGLSurface glfwGetEGLSurface(GLFWwindow* window);
SSCAPI EGLSurface glfwGetEGLSurface(GLFWwindow* window);
#endif
#if defined(GLFW_EXPOSE_NATIVE_OSMESA)
@@ -582,7 +582,7 @@ GLFWAPI EGLSurface glfwGetEGLSurface(GLFWwindow* window);
*
* @ingroup native
*/
GLFWAPI int glfwGetOSMesaColorBuffer(GLFWwindow* window, int* width, int* height, int* format, void** buffer);
SSCAPI int glfwGetOSMesaColorBuffer(GLFWwindow* window, int* width, int* height, int* format, void** buffer);
/*! @brief Retrieves the depth buffer associated with the specified window.
*
@@ -606,7 +606,7 @@ GLFWAPI int glfwGetOSMesaColorBuffer(GLFWwindow* window, int* width, int* height
*
* @ingroup native
*/
GLFWAPI int glfwGetOSMesaDepthBuffer(GLFWwindow* window, int* width, int* height, int* bytesPerValue, void** buffer);
SSCAPI int glfwGetOSMesaDepthBuffer(GLFWwindow* window, int* width, int* height, int* bytesPerValue, void** buffer);
/*! @brief Returns the `OSMesaContext` of the specified window.
*
@@ -623,7 +623,7 @@ GLFWAPI int glfwGetOSMesaDepthBuffer(GLFWwindow* window, int* width, int* height
*
* @ingroup native
*/
GLFWAPI OSMesaContext glfwGetOSMesaContext(GLFWwindow* window);
SSCAPI OSMesaContext glfwGetOSMesaContext(GLFWwindow* window);
#endif
#ifdef __cplusplus
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,32 @@
//========================================================================
// GLFW 3.4 - www.glfw.org
//------------------------------------------------------------------------
// Copyright (c) 2006-2017 Camilla Löwy <elmindreda@glfw.org>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would
// be appreciated but is not required.
//
// 2. Altered source versions must be plainly marked as such, and must not
// be misrepresented as being the original software.
//
// 3. This notice may not be removed or altered from any source
// distribution.
//
//========================================================================
GLFWbool _glfwInitJoysticksNull(void);
void _glfwTerminateJoysticksNull(void);
GLFWbool _glfwPollJoystickNull(_GLFWjoystick* js, int mode);
const char* _glfwGetMappingNameNull(void);
void _glfwUpdateGamepadGUIDNull(char* guid);
@@ -0,0 +1,273 @@
//========================================================================
// GLFW 3.4 - www.glfw.org
//------------------------------------------------------------------------
// Copyright (c) 2016 Google Inc.
// Copyright (c) 2016-2017 Camilla Löwy <elmindreda@glfw.org>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would
// be appreciated but is not required.
//
// 2. Altered source versions must be plainly marked as such, and must not
// be misrepresented as being the original software.
//
// 3. This notice may not be removed or altered from any source
// distribution.
//
//========================================================================
#define GLFW_NULL_WINDOW_STATE _GLFWwindowNull null;
#define GLFW_NULL_LIBRARY_WINDOW_STATE _GLFWlibraryNull null;
#define GLFW_NULL_MONITOR_STATE _GLFWmonitorNull null;
#define GLFW_NULL_CONTEXT_STATE
#define GLFW_NULL_CURSOR_STATE
#define GLFW_NULL_LIBRARY_CONTEXT_STATE
#define GLFW_NULL_SC_FIRST GLFW_NULL_SC_SPACE
#define GLFW_NULL_SC_SPACE 1
#define GLFW_NULL_SC_APOSTROPHE 2
#define GLFW_NULL_SC_COMMA 3
#define GLFW_NULL_SC_MINUS 4
#define GLFW_NULL_SC_PERIOD 5
#define GLFW_NULL_SC_SLASH 6
#define GLFW_NULL_SC_0 7
#define GLFW_NULL_SC_1 8
#define GLFW_NULL_SC_2 9
#define GLFW_NULL_SC_3 10
#define GLFW_NULL_SC_4 11
#define GLFW_NULL_SC_5 12
#define GLFW_NULL_SC_6 13
#define GLFW_NULL_SC_7 14
#define GLFW_NULL_SC_8 15
#define GLFW_NULL_SC_9 16
#define GLFW_NULL_SC_SEMICOLON 17
#define GLFW_NULL_SC_EQUAL 18
#define GLFW_NULL_SC_LEFT_BRACKET 19
#define GLFW_NULL_SC_BACKSLASH 20
#define GLFW_NULL_SC_RIGHT_BRACKET 21
#define GLFW_NULL_SC_GRAVE_ACCENT 22
#define GLFW_NULL_SC_WORLD_1 23
#define GLFW_NULL_SC_WORLD_2 24
#define GLFW_NULL_SC_ESCAPE 25
#define GLFW_NULL_SC_ENTER 26
#define GLFW_NULL_SC_TAB 27
#define GLFW_NULL_SC_BACKSPACE 28
#define GLFW_NULL_SC_INSERT 29
#define GLFW_NULL_SC_DELETE 30
#define GLFW_NULL_SC_RIGHT 31
#define GLFW_NULL_SC_LEFT 32
#define GLFW_NULL_SC_DOWN 33
#define GLFW_NULL_SC_UP 34
#define GLFW_NULL_SC_PAGE_UP 35
#define GLFW_NULL_SC_PAGE_DOWN 36
#define GLFW_NULL_SC_HOME 37
#define GLFW_NULL_SC_END 38
#define GLFW_NULL_SC_CAPS_LOCK 39
#define GLFW_NULL_SC_SCROLL_LOCK 40
#define GLFW_NULL_SC_NUM_LOCK 41
#define GLFW_NULL_SC_PRINT_SCREEN 42
#define GLFW_NULL_SC_PAUSE 43
#define GLFW_NULL_SC_A 44
#define GLFW_NULL_SC_B 45
#define GLFW_NULL_SC_C 46
#define GLFW_NULL_SC_D 47
#define GLFW_NULL_SC_E 48
#define GLFW_NULL_SC_F 49
#define GLFW_NULL_SC_G 50
#define GLFW_NULL_SC_H 51
#define GLFW_NULL_SC_I 52
#define GLFW_NULL_SC_J 53
#define GLFW_NULL_SC_K 54
#define GLFW_NULL_SC_L 55
#define GLFW_NULL_SC_M 56
#define GLFW_NULL_SC_N 57
#define GLFW_NULL_SC_O 58
#define GLFW_NULL_SC_P 59
#define GLFW_NULL_SC_Q 60
#define GLFW_NULL_SC_R 61
#define GLFW_NULL_SC_S 62
#define GLFW_NULL_SC_T 63
#define GLFW_NULL_SC_U 64
#define GLFW_NULL_SC_V 65
#define GLFW_NULL_SC_W 66
#define GLFW_NULL_SC_X 67
#define GLFW_NULL_SC_Y 68
#define GLFW_NULL_SC_Z 69
#define GLFW_NULL_SC_F1 70
#define GLFW_NULL_SC_F2 71
#define GLFW_NULL_SC_F3 72
#define GLFW_NULL_SC_F4 73
#define GLFW_NULL_SC_F5 74
#define GLFW_NULL_SC_F6 75
#define GLFW_NULL_SC_F7 76
#define GLFW_NULL_SC_F8 77
#define GLFW_NULL_SC_F9 78
#define GLFW_NULL_SC_F10 79
#define GLFW_NULL_SC_F11 80
#define GLFW_NULL_SC_F12 81
#define GLFW_NULL_SC_F13 82
#define GLFW_NULL_SC_F14 83
#define GLFW_NULL_SC_F15 84
#define GLFW_NULL_SC_F16 85
#define GLFW_NULL_SC_F17 86
#define GLFW_NULL_SC_F18 87
#define GLFW_NULL_SC_F19 88
#define GLFW_NULL_SC_F20 89
#define GLFW_NULL_SC_F21 90
#define GLFW_NULL_SC_F22 91
#define GLFW_NULL_SC_F23 92
#define GLFW_NULL_SC_F24 93
#define GLFW_NULL_SC_F25 94
#define GLFW_NULL_SC_KP_0 95
#define GLFW_NULL_SC_KP_1 96
#define GLFW_NULL_SC_KP_2 97
#define GLFW_NULL_SC_KP_3 98
#define GLFW_NULL_SC_KP_4 99
#define GLFW_NULL_SC_KP_5 100
#define GLFW_NULL_SC_KP_6 101
#define GLFW_NULL_SC_KP_7 102
#define GLFW_NULL_SC_KP_8 103
#define GLFW_NULL_SC_KP_9 104
#define GLFW_NULL_SC_KP_DECIMAL 105
#define GLFW_NULL_SC_KP_DIVIDE 106
#define GLFW_NULL_SC_KP_MULTIPLY 107
#define GLFW_NULL_SC_KP_SUBTRACT 108
#define GLFW_NULL_SC_KP_ADD 109
#define GLFW_NULL_SC_KP_ENTER 110
#define GLFW_NULL_SC_KP_EQUAL 111
#define GLFW_NULL_SC_LEFT_SHIFT 112
#define GLFW_NULL_SC_LEFT_CONTROL 113
#define GLFW_NULL_SC_LEFT_ALT 114
#define GLFW_NULL_SC_LEFT_SUPER 115
#define GLFW_NULL_SC_RIGHT_SHIFT 116
#define GLFW_NULL_SC_RIGHT_CONTROL 117
#define GLFW_NULL_SC_RIGHT_ALT 118
#define GLFW_NULL_SC_RIGHT_SUPER 119
#define GLFW_NULL_SC_MENU 120
#define GLFW_NULL_SC_LAST GLFW_NULL_SC_MENU
// Null-specific per-window data
//
typedef struct _GLFWwindowNull
{
int xpos;
int ypos;
int width;
int height;
char* title;
GLFWbool visible;
GLFWbool iconified;
GLFWbool maximized;
GLFWbool resizable;
GLFWbool decorated;
GLFWbool floating;
GLFWbool transparent;
float opacity;
} _GLFWwindowNull;
// Null-specific per-monitor data
//
typedef struct _GLFWmonitorNull
{
GLFWgammaramp ramp;
} _GLFWmonitorNull;
// Null-specific global data
//
typedef struct _GLFWlibraryNull
{
int xcursor;
int ycursor;
char* clipboardString;
_GLFWwindow* focusedWindow;
uint16_t keycodes[GLFW_NULL_SC_LAST + 1];
uint8_t scancodes[GLFW_KEY_LAST + 1];
} _GLFWlibraryNull;
void _glfwPollMonitorsNull(void);
GLFWbool _glfwConnectNull(int platformID, _GLFWplatform* platform);
int _glfwInitNull(void);
void _glfwTerminateNull(void);
void _glfwFreeMonitorNull(_GLFWmonitor* monitor);
void _glfwGetMonitorPosNull(_GLFWmonitor* monitor, int* xpos, int* ypos);
void _glfwGetMonitorContentScaleNull(_GLFWmonitor* monitor, float* xscale, float* yscale);
void _glfwGetMonitorWorkareaNull(_GLFWmonitor* monitor, int* xpos, int* ypos, int* width, int* height);
GLFWvidmode* _glfwGetVideoModesNull(_GLFWmonitor* monitor, int* found);
void _glfwGetVideoModeNull(_GLFWmonitor* monitor, GLFWvidmode* mode);
GLFWbool _glfwGetGammaRampNull(_GLFWmonitor* monitor, GLFWgammaramp* ramp);
void _glfwSetGammaRampNull(_GLFWmonitor* monitor, const GLFWgammaramp* ramp);
GLFWbool _glfwCreateWindowNull(_GLFWwindow* window, const _GLFWwndconfig* wndconfig, const _GLFWctxconfig* ctxconfig, const _GLFWfbconfig* fbconfig);
void _glfwDestroyWindowNull(_GLFWwindow* window);
void _glfwSetWindowTitleNull(_GLFWwindow* window, const char* title);
void _glfwSetWindowIconNull(_GLFWwindow* window, int count, const GLFWimage* images);
void _glfwSetWindowMonitorNull(_GLFWwindow* window, _GLFWmonitor* monitor, int xpos, int ypos, int width, int height, int refreshRate);
void _glfwGetWindowPosNull(_GLFWwindow* window, int* xpos, int* ypos);
void _glfwSetWindowPosNull(_GLFWwindow* window, int xpos, int ypos);
void _glfwGetWindowSizeNull(_GLFWwindow* window, int* width, int* height);
void _glfwSetWindowSizeNull(_GLFWwindow* window, int width, int height);
void _glfwSetWindowSizeLimitsNull(_GLFWwindow* window, int minwidth, int minheight, int maxwidth, int maxheight);
void _glfwSetWindowAspectRatioNull(_GLFWwindow* window, int n, int d);
void _glfwGetFramebufferSizeNull(_GLFWwindow* window, int* width, int* height);
void _glfwGetWindowFrameSizeNull(_GLFWwindow* window, int* left, int* top, int* right, int* bottom);
void _glfwGetWindowContentScaleNull(_GLFWwindow* window, float* xscale, float* yscale);
void _glfwIconifyWindowNull(_GLFWwindow* window);
void _glfwRestoreWindowNull(_GLFWwindow* window);
void _glfwMaximizeWindowNull(_GLFWwindow* window);
GLFWbool _glfwWindowMaximizedNull(_GLFWwindow* window);
GLFWbool _glfwWindowHoveredNull(_GLFWwindow* window);
GLFWbool _glfwFramebufferTransparentNull(_GLFWwindow* window);
void _glfwSetWindowResizableNull(_GLFWwindow* window, GLFWbool enabled);
void _glfwSetWindowDecoratedNull(_GLFWwindow* window, GLFWbool enabled);
void _glfwSetWindowFloatingNull(_GLFWwindow* window, GLFWbool enabled);
void _glfwSetWindowMousePassthroughNull(_GLFWwindow* window, GLFWbool enabled);
float _glfwGetWindowOpacityNull(_GLFWwindow* window);
void _glfwSetWindowOpacityNull(_GLFWwindow* window, float opacity);
void _glfwSetRawMouseMotionNull(_GLFWwindow *window, GLFWbool enabled);
GLFWbool _glfwRawMouseMotionSupportedNull(void);
void _glfwShowWindowNull(_GLFWwindow* window);
void _glfwRequestWindowAttentionNull(_GLFWwindow* window);
void _glfwRequestWindowAttentionNull(_GLFWwindow* window);
void _glfwHideWindowNull(_GLFWwindow* window);
void _glfwFocusWindowNull(_GLFWwindow* window);
GLFWbool _glfwWindowFocusedNull(_GLFWwindow* window);
GLFWbool _glfwWindowIconifiedNull(_GLFWwindow* window);
GLFWbool _glfwWindowVisibleNull(_GLFWwindow* window);
void _glfwPollEventsNull(void);
void _glfwWaitEventsNull(void);
void _glfwWaitEventsTimeoutNull(double timeout);
void _glfwPostEmptyEventNull(void);
void _glfwGetCursorPosNull(_GLFWwindow* window, double* xpos, double* ypos);
void _glfwSetCursorPosNull(_GLFWwindow* window, double x, double y);
void _glfwSetCursorModeNull(_GLFWwindow* window, int mode);
GLFWbool _glfwCreateCursorNull(_GLFWcursor* cursor, const GLFWimage* image, int xhot, int yhot);
GLFWbool _glfwCreateStandardCursorNull(_GLFWcursor* cursor, int shape);
void _glfwDestroyCursorNull(_GLFWcursor* cursor);
void _glfwSetCursorNull(_GLFWwindow* window, _GLFWcursor* cursor);
void _glfwSetClipboardStringNull(const char* string);
const char* _glfwGetClipboardStringNull(void);
const char* _glfwGetScancodeNameNull(int scancode);
int _glfwGetKeyScancodeNull(int key);
EGLenum _glfwGetEGLPlatformNull(EGLint** attribs);
EGLNativeDisplayType _glfwGetEGLNativeDisplayNull(void);
EGLNativeWindowType _glfwGetEGLNativeWindowNull(_GLFWwindow* window);
void _glfwGetRequiredInstanceExtensionsNull(char** extensions);
GLFWbool _glfwGetPhysicalDevicePresentationSupportNull(VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily);
VkResult _glfwCreateWindowSurfaceNull(VkInstance instance, _GLFWwindow* window, const VkAllocationCallbacks* allocator, VkSurfaceKHR* surface);
void _glfwPollMonitorsNull(void);
@@ -0,0 +1,203 @@
//========================================================================
// GLFW 3.4 - www.glfw.org
//------------------------------------------------------------------------
// Copyright (c) 2002-2006 Marcus Geelnard
// Copyright (c) 2006-2018 Camilla Löwy <elmindreda@glfw.org>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would
// be appreciated but is not required.
//
// 2. Altered source versions must be plainly marked as such, and must not
// be misrepresented as being the original software.
//
// 3. This notice may not be removed or altered from any source
// distribution.
//
//========================================================================
#if defined(GLFW_BUILD_WIN32_TIMER) || \
defined(GLFW_BUILD_WIN32_MODULE) || \
defined(GLFW_BUILD_WIN32_THREAD) || \
defined(GLFW_BUILD_COCOA_TIMER) || \
defined(GLFW_BUILD_POSIX_TIMER) || \
defined(GLFW_BUILD_POSIX_MODULE) || \
defined(GLFW_BUILD_POSIX_THREAD) || \
defined(GLFW_BUILD_POSIX_POLL) || \
defined(GLFW_BUILD_LINUX_JOYSTICK)
#error "You must not define these; define zero or more _GLFW_<platform> macros instead"
#endif
#include "glfw_null_platform.h"
#if defined(_GLFW_WIN32)
#include "glfw_win32_platform.h"
#else
#define GLFW_WIN32_WINDOW_STATE
#define GLFW_WIN32_MONITOR_STATE
#define GLFW_WIN32_CURSOR_STATE
#define GLFW_WIN32_LIBRARY_WINDOW_STATE
#define GLFW_WGL_CONTEXT_STATE
#define GLFW_WGL_LIBRARY_CONTEXT_STATE
#endif
#if defined(_GLFW_COCOA)
#include "cocoa_platform.h"
#else
#define GLFW_COCOA_WINDOW_STATE
#define GLFW_COCOA_MONITOR_STATE
#define GLFW_COCOA_CURSOR_STATE
#define GLFW_COCOA_LIBRARY_WINDOW_STATE
#define GLFW_NSGL_CONTEXT_STATE
#define GLFW_NSGL_LIBRARY_CONTEXT_STATE
#endif
#if defined(_GLFW_WAYLAND)
#include "wl_platform.h"
#else
#define GLFW_WAYLAND_WINDOW_STATE
#define GLFW_WAYLAND_MONITOR_STATE
#define GLFW_WAYLAND_CURSOR_STATE
#define GLFW_WAYLAND_LIBRARY_WINDOW_STATE
#endif
#if defined(_GLFW_X11)
#include "x11_platform.h"
#else
#define GLFW_X11_WINDOW_STATE
#define GLFW_X11_MONITOR_STATE
#define GLFW_X11_CURSOR_STATE
#define GLFW_X11_LIBRARY_WINDOW_STATE
#define GLFW_GLX_CONTEXT_STATE
#define GLFW_GLX_LIBRARY_CONTEXT_STATE
#endif
#include "glfw_null_joystick.h"
#if defined(_GLFW_WIN32)
#include "glfw_win32_joystick.h"
#else
#define GLFW_WIN32_JOYSTICK_STATE
#define GLFW_WIN32_LIBRARY_JOYSTICK_STATE
#endif
#if defined(_GLFW_COCOA)
#include "cocoa_joystick.h"
#else
#define GLFW_COCOA_JOYSTICK_STATE
#define GLFW_COCOA_LIBRARY_JOYSTICK_STATE
#endif
#if (defined(_GLFW_X11) || defined(_GLFW_WAYLAND)) && defined(__linux__)
#define GLFW_BUILD_LINUX_JOYSTICK
#endif
#if defined(GLFW_BUILD_LINUX_JOYSTICK)
#include "linux_joystick.h"
#else
#define GLFW_LINUX_JOYSTICK_STATE
#define GLFW_LINUX_LIBRARY_JOYSTICK_STATE
#endif
#define GLFW_PLATFORM_WINDOW_STATE \
GLFW_WIN32_WINDOW_STATE \
GLFW_COCOA_WINDOW_STATE \
GLFW_WAYLAND_WINDOW_STATE \
GLFW_X11_WINDOW_STATE \
GLFW_NULL_WINDOW_STATE \
#define GLFW_PLATFORM_MONITOR_STATE \
GLFW_WIN32_MONITOR_STATE \
GLFW_COCOA_MONITOR_STATE \
GLFW_WAYLAND_MONITOR_STATE \
GLFW_X11_MONITOR_STATE \
GLFW_NULL_MONITOR_STATE \
#define GLFW_PLATFORM_CURSOR_STATE \
GLFW_WIN32_CURSOR_STATE \
GLFW_COCOA_CURSOR_STATE \
GLFW_WAYLAND_CURSOR_STATE \
GLFW_X11_CURSOR_STATE \
GLFW_NULL_CURSOR_STATE \
#define GLFW_PLATFORM_JOYSTICK_STATE \
GLFW_WIN32_JOYSTICK_STATE \
GLFW_COCOA_JOYSTICK_STATE \
GLFW_LINUX_JOYSTICK_STATE
#define GLFW_PLATFORM_LIBRARY_WINDOW_STATE \
GLFW_WIN32_LIBRARY_WINDOW_STATE \
GLFW_COCOA_LIBRARY_WINDOW_STATE \
GLFW_WAYLAND_LIBRARY_WINDOW_STATE \
GLFW_X11_LIBRARY_WINDOW_STATE \
GLFW_NULL_LIBRARY_WINDOW_STATE \
#define GLFW_PLATFORM_LIBRARY_JOYSTICK_STATE \
GLFW_WIN32_LIBRARY_JOYSTICK_STATE \
GLFW_COCOA_LIBRARY_JOYSTICK_STATE \
GLFW_LINUX_LIBRARY_JOYSTICK_STATE
#define GLFW_PLATFORM_CONTEXT_STATE \
GLFW_WGL_CONTEXT_STATE \
GLFW_NSGL_CONTEXT_STATE \
GLFW_GLX_CONTEXT_STATE
#define GLFW_PLATFORM_LIBRARY_CONTEXT_STATE \
GLFW_WGL_LIBRARY_CONTEXT_STATE \
GLFW_NSGL_LIBRARY_CONTEXT_STATE \
GLFW_GLX_LIBRARY_CONTEXT_STATE
#if defined(_WIN32)
#define GLFW_BUILD_WIN32_THREAD
#else
#define GLFW_BUILD_POSIX_THREAD
#endif
#if defined(GLFW_BUILD_WIN32_THREAD)
#include "glfw_win32_thread.h"
#define GLFW_PLATFORM_TLS_STATE GLFW_WIN32_TLS_STATE
#define GLFW_PLATFORM_MUTEX_STATE GLFW_WIN32_MUTEX_STATE
#elif defined(GLFW_BUILD_POSIX_THREAD)
#include "posix_thread.h"
#define GLFW_PLATFORM_TLS_STATE GLFW_POSIX_TLS_STATE
#define GLFW_PLATFORM_MUTEX_STATE GLFW_POSIX_MUTEX_STATE
#endif
#if defined(_WIN32)
#define GLFW_BUILD_WIN32_TIMER
#elif defined(__APPLE__)
#define GLFW_BUILD_COCOA_TIMER
#else
#define GLFW_BUILD_POSIX_TIMER
#endif
#if defined(GLFW_BUILD_WIN32_TIMER)
#include "glfw_win32_time.h"
#define GLFW_PLATFORM_LIBRARY_TIMER_STATE GLFW_WIN32_LIBRARY_TIMER_STATE
#elif defined(GLFW_BUILD_COCOA_TIMER)
#include "cocoa_time.h"
#define GLFW_PLATFORM_LIBRARY_TIMER_STATE GLFW_COCOA_LIBRARY_TIMER_STATE
#elif defined(GLFW_BUILD_POSIX_TIMER)
#include "posix_time.h"
#define GLFW_PLATFORM_LIBRARY_TIMER_STATE GLFW_POSIX_LIBRARY_TIMER_STATE
#endif
#if defined(_WIN32)
#define GLFW_BUILD_WIN32_MODULE
#else
#define GLFW_BUILD_POSIX_MODULE
#endif
#if defined(_GLFW_WAYLAND) || defined(_GLFW_X11)
#define GLFW_BUILD_POSIX_POLL
#endif
@@ -0,0 +1,51 @@
//========================================================================
// GLFW 3.4 Win32 - www.glfw.org
//------------------------------------------------------------------------
// Copyright (c) 2006-2017 Camilla Löwy <elmindreda@glfw.org>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would
// be appreciated but is not required.
//
// 2. Altered source versions must be plainly marked as such, and must not
// be misrepresented as being the original software.
//
// 3. This notice may not be removed or altered from any source
// distribution.
//
//========================================================================
#define GLFW_WIN32_JOYSTICK_STATE _GLFWjoystickWin32 win32;
#define GLFW_WIN32_LIBRARY_JOYSTICK_STATE
// Joystick element (axis, button or slider)
//
typedef struct _GLFWjoyobjectWin32
{
int offset;
int type;
} _GLFWjoyobjectWin32;
// Win32-specific per-joystick data
//
typedef struct _GLFWjoystickWin32
{
_GLFWjoyobjectWin32* objects;
int objectCount;
IDirectInputDevice8W* device;
DWORD index;
GUID guid;
} _GLFWjoystickWin32;
void _glfwDetectJoystickConnectionWin32(void);
void _glfwDetectJoystickDisconnectionWin32(void);
@@ -0,0 +1,624 @@
//========================================================================
// GLFW 3.4 Win32 - www.glfw.org
//------------------------------------------------------------------------
// Copyright (c) 2002-2006 Marcus Geelnard
// Copyright (c) 2006-2019 Camilla Löwy <elmindreda@glfw.org>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would
// be appreciated but is not required.
//
// 2. Altered source versions must be plainly marked as such, and must not
// be misrepresented as being the original software.
//
// 3. This notice may not be removed or altered from any source
// distribution.
//
//========================================================================
// We don't need all the fancy stuff
#ifndef NOMINMAX
#define NOMINMAX
#endif
#ifndef VC_EXTRALEAN
#define VC_EXTRALEAN
#endif
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
// This is a workaround for the fact that glfw3.h needs to export APIENTRY (for
// example to allow applications to correctly declare a GL_KHR_debug callback)
// but windows.h assumes no one will define APIENTRY before it does
#undef APIENTRY
// GLFW on Windows is Unicode only and does not work in MBCS mode
#ifndef UNICODE
#define UNICODE
#endif
// GLFW requires Windows XP or later
#if WINVER < 0x0501
#undef WINVER
#define WINVER 0x0501
#endif
#if _WIN32_WINNT < 0x0501
#undef _WIN32_WINNT
#define _WIN32_WINNT 0x0501
#endif
// GLFW uses DirectInput8 interfaces
#define DIRECTINPUT_VERSION 0x0800
// GLFW uses OEM cursor resources
#define OEMRESOURCE
#include <wctype.h>
#include <windows.h>
#include <dinput.h>
#include <xinput.h>
#include <dbt.h>
// HACK: Define macros that some windows.h variants don't
#ifndef WM_MOUSEHWHEEL
#define WM_MOUSEHWHEEL 0x020E
#endif
#ifndef WM_DWMCOMPOSITIONCHANGED
#define WM_DWMCOMPOSITIONCHANGED 0x031E
#endif
#ifndef WM_DWMCOLORIZATIONCOLORCHANGED
#define WM_DWMCOLORIZATIONCOLORCHANGED 0x0320
#endif
#ifndef WM_COPYGLOBALDATA
#define WM_COPYGLOBALDATA 0x0049
#endif
#ifndef WM_UNICHAR
#define WM_UNICHAR 0x0109
#endif
#ifndef UNICODE_NOCHAR
#define UNICODE_NOCHAR 0xFFFF
#endif
#ifndef WM_DPICHANGED
#define WM_DPICHANGED 0x02E0
#endif
#ifndef GET_XBUTTON_WPARAM
#define GET_XBUTTON_WPARAM(w) (HIWORD(w))
#endif
#ifndef EDS_ROTATEDMODE
#define EDS_ROTATEDMODE 0x00000004
#endif
#ifndef DISPLAY_DEVICE_ACTIVE
#define DISPLAY_DEVICE_ACTIVE 0x00000001
#endif
#ifndef _WIN32_WINNT_WINBLUE
#define _WIN32_WINNT_WINBLUE 0x0603
#endif
#ifndef _WIN32_WINNT_WIN8
#define _WIN32_WINNT_WIN8 0x0602
#endif
#ifndef WM_GETDPISCALEDSIZE
#define WM_GETDPISCALEDSIZE 0x02e4
#endif
#ifndef USER_DEFAULT_SCREEN_DPI
#define USER_DEFAULT_SCREEN_DPI 96
#endif
#ifndef OCR_HAND
#define OCR_HAND 32649
#endif
#if WINVER < 0x0601
typedef struct
{
DWORD cbSize;
DWORD ExtStatus;
} CHANGEFILTERSTRUCT;
#ifndef MSGFLT_ALLOW
#define MSGFLT_ALLOW 1
#endif
#endif /*Windows 7*/
#if WINVER < 0x0600
#define DWM_BB_ENABLE 0x00000001
#define DWM_BB_BLURREGION 0x00000002
typedef struct
{
DWORD dwFlags;
BOOL fEnable;
HRGN hRgnBlur;
BOOL fTransitionOnMaximized;
} DWM_BLURBEHIND;
#else
#include <dwmapi.h>
#endif /*Windows Vista*/
#ifndef DPI_ENUMS_DECLARED
typedef enum
{
PROCESS_DPI_UNAWARE = 0,
PROCESS_SYSTEM_DPI_AWARE = 1,
PROCESS_PER_MONITOR_DPI_AWARE = 2
} PROCESS_DPI_AWARENESS;
typedef enum
{
MDT_EFFECTIVE_DPI = 0,
MDT_ANGULAR_DPI = 1,
MDT_RAW_DPI = 2,
MDT_DEFAULT = MDT_EFFECTIVE_DPI
} MONITOR_DPI_TYPE;
#endif /*DPI_ENUMS_DECLARED*/
#ifndef DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2
#define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 ((HANDLE) -4)
#endif /*DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2*/
// Replacement for versionhelpers.h macros, as we cannot rely on the
// application having a correct embedded manifest
//
#define IsWindowsVistaOrGreater() \
_glfwIsWindowsVersionOrGreaterWin32(HIBYTE(_WIN32_WINNT_VISTA), \
LOBYTE(_WIN32_WINNT_VISTA), 0)
#define IsWindows7OrGreater() \
_glfwIsWindowsVersionOrGreaterWin32(HIBYTE(_WIN32_WINNT_WIN7), \
LOBYTE(_WIN32_WINNT_WIN7), 0)
#define IsWindows8OrGreater() \
_glfwIsWindowsVersionOrGreaterWin32(HIBYTE(_WIN32_WINNT_WIN8), \
LOBYTE(_WIN32_WINNT_WIN8), 0)
#define IsWindows8Point1OrGreater() \
_glfwIsWindowsVersionOrGreaterWin32(HIBYTE(_WIN32_WINNT_WINBLUE), \
LOBYTE(_WIN32_WINNT_WINBLUE), 0)
// Windows 10 Anniversary Update
#define _glfwIsWindows10Version1607OrGreaterWin32() \
_glfwIsWindows10BuildOrGreaterWin32(14393)
// Windows 10 Creators Update
#define _glfwIsWindows10Version1703OrGreaterWin32() \
_glfwIsWindows10BuildOrGreaterWin32(15063)
// HACK: Define macros that some xinput.h variants don't
#ifndef XINPUT_CAPS_WIRELESS
#define XINPUT_CAPS_WIRELESS 0x0002
#endif
#ifndef XINPUT_DEVSUBTYPE_WHEEL
#define XINPUT_DEVSUBTYPE_WHEEL 0x02
#endif
#ifndef XINPUT_DEVSUBTYPE_ARCADE_STICK
#define XINPUT_DEVSUBTYPE_ARCADE_STICK 0x03
#endif
#ifndef XINPUT_DEVSUBTYPE_FLIGHT_STICK
#define XINPUT_DEVSUBTYPE_FLIGHT_STICK 0x04
#endif
#ifndef XINPUT_DEVSUBTYPE_DANCE_PAD
#define XINPUT_DEVSUBTYPE_DANCE_PAD 0x05
#endif
#ifndef XINPUT_DEVSUBTYPE_GUITAR
#define XINPUT_DEVSUBTYPE_GUITAR 0x06
#endif
#ifndef XINPUT_DEVSUBTYPE_DRUM_KIT
#define XINPUT_DEVSUBTYPE_DRUM_KIT 0x08
#endif
#ifndef XINPUT_DEVSUBTYPE_ARCADE_PAD
#define XINPUT_DEVSUBTYPE_ARCADE_PAD 0x13
#endif
#ifndef XUSER_MAX_COUNT
#define XUSER_MAX_COUNT 4
#endif
// HACK: Define macros that some dinput.h variants don't
#ifndef DIDFT_OPTIONAL
#define DIDFT_OPTIONAL 0x80000000
#endif
#define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000
#define WGL_SUPPORT_OPENGL_ARB 0x2010
#define WGL_DRAW_TO_WINDOW_ARB 0x2001
#define WGL_PIXEL_TYPE_ARB 0x2013
#define WGL_TYPE_RGBA_ARB 0x202b
#define WGL_ACCELERATION_ARB 0x2003
#define WGL_NO_ACCELERATION_ARB 0x2025
#define WGL_RED_BITS_ARB 0x2015
#define WGL_RED_SHIFT_ARB 0x2016
#define WGL_GREEN_BITS_ARB 0x2017
#define WGL_GREEN_SHIFT_ARB 0x2018
#define WGL_BLUE_BITS_ARB 0x2019
#define WGL_BLUE_SHIFT_ARB 0x201a
#define WGL_ALPHA_BITS_ARB 0x201b
#define WGL_ALPHA_SHIFT_ARB 0x201c
#define WGL_ACCUM_BITS_ARB 0x201d
#define WGL_ACCUM_RED_BITS_ARB 0x201e
#define WGL_ACCUM_GREEN_BITS_ARB 0x201f
#define WGL_ACCUM_BLUE_BITS_ARB 0x2020
#define WGL_ACCUM_ALPHA_BITS_ARB 0x2021
#define WGL_DEPTH_BITS_ARB 0x2022
#define WGL_STENCIL_BITS_ARB 0x2023
#define WGL_AUX_BUFFERS_ARB 0x2024
#define WGL_STEREO_ARB 0x2012
#define WGL_DOUBLE_BUFFER_ARB 0x2011
#define WGL_SAMPLES_ARB 0x2042
#define WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20a9
#define WGL_CONTEXT_DEBUG_BIT_ARB 0x00000001
#define WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002
#define WGL_CONTEXT_PROFILE_MASK_ARB 0x9126
#define WGL_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001
#define WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002
#define WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091
#define WGL_CONTEXT_MINOR_VERSION_ARB 0x2092
#define WGL_CONTEXT_FLAGS_ARB 0x2094
#define WGL_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004
#define WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004
#define WGL_LOSE_CONTEXT_ON_RESET_ARB 0x8252
#define WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256
#define WGL_NO_RESET_NOTIFICATION_ARB 0x8261
#define WGL_CONTEXT_RELEASE_BEHAVIOR_ARB 0x2097
#define WGL_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB 0
#define WGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB 0x2098
#define WGL_CONTEXT_OPENGL_NO_ERROR_ARB 0x31b3
#define WGL_COLORSPACE_EXT 0x309d
#define WGL_COLORSPACE_SRGB_EXT 0x3089
#define ERROR_INVALID_VERSION_ARB 0x2095
#define ERROR_INVALID_PROFILE_ARB 0x2096
#define ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB 0x2054
// xinput.dll function pointer typedefs
typedef DWORD (WINAPI * PFN_XInputGetCapabilities)(DWORD,DWORD,XINPUT_CAPABILITIES*);
typedef DWORD (WINAPI * PFN_XInputGetState)(DWORD,XINPUT_STATE*);
#define XInputGetCapabilities _glfw.win32.xinput.GetCapabilities
#define XInputGetState _glfw.win32.xinput.GetState
// dinput8.dll function pointer typedefs
typedef HRESULT (WINAPI * PFN_DirectInput8Create)(HINSTANCE,DWORD,REFIID,LPVOID*,LPUNKNOWN);
#define DirectInput8Create _glfw.win32.dinput8.Create
// user32.dll function pointer typedefs
typedef BOOL (WINAPI * PFN_SetProcessDPIAware)(void);
typedef BOOL (WINAPI * PFN_ChangeWindowMessageFilterEx)(HWND,UINT,DWORD,CHANGEFILTERSTRUCT*);
typedef BOOL (WINAPI * PFN_EnableNonClientDpiScaling)(HWND);
typedef BOOL (WINAPI * PFN_SetProcessDpiAwarenessContext)(HANDLE);
typedef UINT (WINAPI * PFN_GetDpiForWindow)(HWND);
typedef BOOL (WINAPI * PFN_AdjustWindowRectExForDpi)(LPRECT,DWORD,BOOL,DWORD,UINT);
typedef int (WINAPI * PFN_GetSystemMetricsForDpi)(int,UINT);
#define SetProcessDPIAware _glfw.win32.user32.SetProcessDPIAware_
#define ChangeWindowMessageFilterEx _glfw.win32.user32.ChangeWindowMessageFilterEx_
#define EnableNonClientDpiScaling _glfw.win32.user32.EnableNonClientDpiScaling_
#define SetProcessDpiAwarenessContext _glfw.win32.user32.SetProcessDpiAwarenessContext_
#define GetDpiForWindow _glfw.win32.user32.GetDpiForWindow_
#define AdjustWindowRectExForDpi _glfw.win32.user32.AdjustWindowRectExForDpi_
#define GetSystemMetricsForDpi _glfw.win32.user32.GetSystemMetricsForDpi_
// dwmapi.dll function pointer typedefs
typedef HRESULT (WINAPI * PFN_DwmIsCompositionEnabled)(BOOL*);
typedef HRESULT (WINAPI * PFN_DwmFlush)(VOID);
typedef HRESULT(WINAPI * PFN_DwmEnableBlurBehindWindow)(HWND,const DWM_BLURBEHIND*);
typedef HRESULT (WINAPI * PFN_DwmGetColorizationColor)(DWORD*,BOOL*);
#define DwmIsCompositionEnabled _glfw.win32.dwmapi.IsCompositionEnabled
#define DwmFlush _glfw.win32.dwmapi.Flush
#define DwmEnableBlurBehindWindow _glfw.win32.dwmapi.EnableBlurBehindWindow
#define DwmGetColorizationColor _glfw.win32.dwmapi.GetColorizationColor
// shcore.dll function pointer typedefs
typedef HRESULT (WINAPI * PFN_SetProcessDpiAwareness)(PROCESS_DPI_AWARENESS);
typedef HRESULT (WINAPI * PFN_GetDpiForMonitor)(HMONITOR,MONITOR_DPI_TYPE,UINT*,UINT*);
#define SetProcessDpiAwareness _glfw.win32.shcore.SetProcessDpiAwareness_
#define GetDpiForMonitor _glfw.win32.shcore.GetDpiForMonitor_
// ntdll.dll function pointer typedefs
typedef LONG (WINAPI * PFN_RtlVerifyVersionInfo)(OSVERSIONINFOEXW*,ULONG,ULONGLONG);
#define RtlVerifyVersionInfo _glfw.win32.ntdll.RtlVerifyVersionInfo_
// WGL extension pointer typedefs
typedef BOOL (WINAPI * PFNWGLSWAPINTERVALEXTPROC)(int);
typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBIVARBPROC)(HDC,int,int,UINT,const int*,int*);
typedef const char* (WINAPI * PFNWGLGETEXTENSIONSSTRINGEXTPROC)(void);
typedef const char* (WINAPI * PFNWGLGETEXTENSIONSSTRINGARBPROC)(HDC);
typedef HGLRC (WINAPI * PFNWGLCREATECONTEXTATTRIBSARBPROC)(HDC,HGLRC,const int*);
#define wglSwapIntervalEXT _glfw.wgl.SwapIntervalEXT
#define wglGetPixelFormatAttribivARB _glfw.wgl.GetPixelFormatAttribivARB
#define wglGetExtensionsStringEXT _glfw.wgl.GetExtensionsStringEXT
#define wglGetExtensionsStringARB _glfw.wgl.GetExtensionsStringARB
#define wglCreateContextAttribsARB _glfw.wgl.CreateContextAttribsARB
// opengl32.dll function pointer typedefs
typedef HGLRC (WINAPI * PFN_wglCreateContext)(HDC);
typedef BOOL (WINAPI * PFN_wglDeleteContext)(HGLRC);
typedef PROC (WINAPI * PFN_wglGetProcAddress)(LPCSTR);
typedef HDC (WINAPI * PFN_wglGetCurrentDC)(void);
typedef HGLRC (WINAPI * PFN_wglGetCurrentContext)(void);
typedef BOOL (WINAPI * PFN_wglMakeCurrent)(HDC,HGLRC);
typedef BOOL (WINAPI * PFN_wglShareLists)(HGLRC,HGLRC);
#define wglCreateContext _glfw.wgl.CreateContext
#define wglDeleteContext _glfw.wgl.DeleteContext
#define wglGetProcAddress _glfw.wgl.GetProcAddress
#define wglGetCurrentDC _glfw.wgl.GetCurrentDC
#define wglGetCurrentContext _glfw.wgl.GetCurrentContext
#define wglMakeCurrent _glfw.wgl.MakeCurrent
#define wglShareLists _glfw.wgl.ShareLists
typedef VkFlags VkWin32SurfaceCreateFlagsKHR;
typedef struct VkWin32SurfaceCreateInfoKHR
{
VkStructureType sType;
const void* pNext;
VkWin32SurfaceCreateFlagsKHR flags;
HINSTANCE hinstance;
HWND hwnd;
} VkWin32SurfaceCreateInfoKHR;
typedef VkResult (APIENTRY *PFN_vkCreateWin32SurfaceKHR)(VkInstance,const VkWin32SurfaceCreateInfoKHR*,const VkAllocationCallbacks*,VkSurfaceKHR*);
typedef VkBool32 (APIENTRY *PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR)(VkPhysicalDevice,uint32_t);
#define GLFW_WIN32_WINDOW_STATE _GLFWwindowWin32 win32;
#define GLFW_WIN32_LIBRARY_WINDOW_STATE _GLFWlibraryWin32 win32;
#define GLFW_WIN32_MONITOR_STATE _GLFWmonitorWin32 win32;
#define GLFW_WIN32_CURSOR_STATE _GLFWcursorWin32 win32;
#define GLFW_WGL_CONTEXT_STATE _GLFWcontextWGL wgl;
#define GLFW_WGL_LIBRARY_CONTEXT_STATE _GLFWlibraryWGL wgl;
// WGL-specific per-context data
//
typedef struct _GLFWcontextWGL
{
HDC dc;
HGLRC handle;
int interval;
} _GLFWcontextWGL;
// WGL-specific global data
//
typedef struct _GLFWlibraryWGL
{
HINSTANCE instance;
PFN_wglCreateContext CreateContext;
PFN_wglDeleteContext DeleteContext;
PFN_wglGetProcAddress GetProcAddress;
PFN_wglGetCurrentDC GetCurrentDC;
PFN_wglGetCurrentContext GetCurrentContext;
PFN_wglMakeCurrent MakeCurrent;
PFN_wglShareLists ShareLists;
PFNWGLSWAPINTERVALEXTPROC SwapIntervalEXT;
PFNWGLGETPIXELFORMATATTRIBIVARBPROC GetPixelFormatAttribivARB;
PFNWGLGETEXTENSIONSSTRINGEXTPROC GetExtensionsStringEXT;
PFNWGLGETEXTENSIONSSTRINGARBPROC GetExtensionsStringARB;
PFNWGLCREATECONTEXTATTRIBSARBPROC CreateContextAttribsARB;
GLFWbool EXT_swap_control;
GLFWbool EXT_colorspace;
GLFWbool ARB_multisample;
GLFWbool ARB_framebuffer_sRGB;
GLFWbool EXT_framebuffer_sRGB;
GLFWbool ARB_pixel_format;
GLFWbool ARB_create_context;
GLFWbool ARB_create_context_profile;
GLFWbool EXT_create_context_es2_profile;
GLFWbool ARB_create_context_robustness;
GLFWbool ARB_create_context_no_error;
GLFWbool ARB_context_flush_control;
} _GLFWlibraryWGL;
// Win32-specific per-window data
//
typedef struct _GLFWwindowWin32
{
HWND handle;
HICON bigIcon;
HICON smallIcon;
GLFWbool cursorTracked;
GLFWbool frameAction;
GLFWbool iconified;
GLFWbool maximized;
// Whether to enable framebuffer transparency on DWM
GLFWbool transparent;
GLFWbool scaleToMonitor;
GLFWbool keymenu;
// Cached size used to filter out duplicate events
int width, height;
// The last received cursor position, regardless of source
int lastCursorPosX, lastCursorPosY;
// The last received high surrogate when decoding pairs of UTF-16 messages
WCHAR highSurrogate;
} _GLFWwindowWin32;
// Win32-specific global data
//
typedef struct _GLFWlibraryWin32
{
HINSTANCE instance;
HWND helperWindowHandle;
ATOM helperWindowClass;
ATOM mainWindowClass;
HDEVNOTIFY deviceNotificationHandle;
int acquiredMonitorCount;
char* clipboardString;
short int keycodes[512];
short int scancodes[GLFW_KEY_LAST + 1];
char keynames[GLFW_KEY_LAST + 1][5];
// Where to place the cursor when re-enabled
double restoreCursorPosX, restoreCursorPosY;
// The window whose disabled cursor mode is active
_GLFWwindow* disabledCursorWindow;
// The window the cursor is captured in
_GLFWwindow* capturedCursorWindow;
RAWINPUT* rawInput;
int rawInputSize;
UINT mouseTrailSize;
struct {
HINSTANCE instance;
PFN_DirectInput8Create Create;
IDirectInput8W* api;
} dinput8;
struct {
HINSTANCE instance;
PFN_XInputGetCapabilities GetCapabilities;
PFN_XInputGetState GetState;
} xinput;
struct {
HINSTANCE instance;
PFN_SetProcessDPIAware SetProcessDPIAware_;
PFN_ChangeWindowMessageFilterEx ChangeWindowMessageFilterEx_;
PFN_EnableNonClientDpiScaling EnableNonClientDpiScaling_;
PFN_SetProcessDpiAwarenessContext SetProcessDpiAwarenessContext_;
PFN_GetDpiForWindow GetDpiForWindow_;
PFN_AdjustWindowRectExForDpi AdjustWindowRectExForDpi_;
PFN_GetSystemMetricsForDpi GetSystemMetricsForDpi_;
} user32;
struct {
HINSTANCE instance;
PFN_DwmIsCompositionEnabled IsCompositionEnabled;
PFN_DwmFlush Flush;
PFN_DwmEnableBlurBehindWindow EnableBlurBehindWindow;
PFN_DwmGetColorizationColor GetColorizationColor;
} dwmapi;
struct {
HINSTANCE instance;
PFN_SetProcessDpiAwareness SetProcessDpiAwareness_;
PFN_GetDpiForMonitor GetDpiForMonitor_;
} shcore;
struct {
HINSTANCE instance;
PFN_RtlVerifyVersionInfo RtlVerifyVersionInfo_;
} ntdll;
} _GLFWlibraryWin32;
// Win32-specific per-monitor data
//
typedef struct _GLFWmonitorWin32
{
HMONITOR handle;
// This size matches the static size of DISPLAY_DEVICE.DeviceName
WCHAR adapterName[32];
WCHAR displayName[32];
char publicAdapterName[32];
char publicDisplayName[32];
GLFWbool modesPruned;
GLFWbool modeChanged;
} _GLFWmonitorWin32;
// Win32-specific per-cursor data
//
typedef struct _GLFWcursorWin32
{
HCURSOR handle;
} _GLFWcursorWin32;
GLFWbool _glfwConnectWin32(int platformID, _GLFWplatform* platform);
int _glfwInitWin32(void);
void _glfwTerminateWin32(void);
WCHAR* _glfwCreateWideStringFromUTF8Win32(const char* source);
char* _glfwCreateUTF8FromWideStringWin32(const WCHAR* source);
BOOL _glfwIsWindowsVersionOrGreaterWin32(WORD major, WORD minor, WORD sp);
BOOL _glfwIsWindows10BuildOrGreaterWin32(WORD build);
void _glfwInputErrorWin32(int error, const char* description);
void _glfwUpdateKeyNamesWin32(void);
void _glfwPollMonitorsWin32(void);
void _glfwSetVideoModeWin32(_GLFWmonitor* monitor, const GLFWvidmode* desired);
void _glfwRestoreVideoModeWin32(_GLFWmonitor* monitor);
void _glfwGetHMONITORContentScaleWin32(HMONITOR handle, float* xscale, float* yscale);
GLFWbool _glfwCreateWindowWin32(_GLFWwindow* window, const _GLFWwndconfig* wndconfig, const _GLFWctxconfig* ctxconfig, const _GLFWfbconfig* fbconfig);
void _glfwDestroyWindowWin32(_GLFWwindow* window);
void _glfwSetWindowTitleWin32(_GLFWwindow* window, const char* title);
void _glfwSetWindowIconWin32(_GLFWwindow* window, int count, const GLFWimage* images);
void _glfwGetWindowPosWin32(_GLFWwindow* window, int* xpos, int* ypos);
void _glfwSetWindowPosWin32(_GLFWwindow* window, int xpos, int ypos);
void _glfwGetWindowSizeWin32(_GLFWwindow* window, int* width, int* height);
void _glfwSetWindowSizeWin32(_GLFWwindow* window, int width, int height);
void _glfwSetWindowSizeLimitsWin32(_GLFWwindow* window, int minwidth, int minheight, int maxwidth, int maxheight);
void _glfwSetWindowAspectRatioWin32(_GLFWwindow* window, int numer, int denom);
void _glfwGetFramebufferSizeWin32(_GLFWwindow* window, int* width, int* height);
void _glfwGetWindowFrameSizeWin32(_GLFWwindow* window, int* left, int* top, int* right, int* bottom);
void _glfwGetWindowContentScaleWin32(_GLFWwindow* window, float* xscale, float* yscale);
void _glfwIconifyWindowWin32(_GLFWwindow* window);
void _glfwRestoreWindowWin32(_GLFWwindow* window);
void _glfwMaximizeWindowWin32(_GLFWwindow* window);
void _glfwShowWindowWin32(_GLFWwindow* window);
void _glfwHideWindowWin32(_GLFWwindow* window);
void _glfwRequestWindowAttentionWin32(_GLFWwindow* window);
void _glfwFocusWindowWin32(_GLFWwindow* window);
void _glfwSetWindowMonitorWin32(_GLFWwindow* window, _GLFWmonitor* monitor, int xpos, int ypos, int width, int height, int refreshRate);
GLFWbool _glfwWindowFocusedWin32(_GLFWwindow* window);
GLFWbool _glfwWindowIconifiedWin32(_GLFWwindow* window);
GLFWbool _glfwWindowVisibleWin32(_GLFWwindow* window);
GLFWbool _glfwWindowMaximizedWin32(_GLFWwindow* window);
GLFWbool _glfwWindowHoveredWin32(_GLFWwindow* window);
GLFWbool _glfwFramebufferTransparentWin32(_GLFWwindow* window);
void _glfwSetWindowResizableWin32(_GLFWwindow* window, GLFWbool enabled);
void _glfwSetWindowDecoratedWin32(_GLFWwindow* window, GLFWbool enabled);
void _glfwSetWindowFloatingWin32(_GLFWwindow* window, GLFWbool enabled);
void _glfwSetWindowMousePassthroughWin32(_GLFWwindow* window, GLFWbool enabled);
float _glfwGetWindowOpacityWin32(_GLFWwindow* window);
void _glfwSetWindowOpacityWin32(_GLFWwindow* window, float opacity);
void _glfwSetRawMouseMotionWin32(_GLFWwindow *window, GLFWbool enabled);
GLFWbool _glfwRawMouseMotionSupportedWin32(void);
void _glfwPollEventsWin32(void);
void _glfwWaitEventsWin32(void);
void _glfwWaitEventsTimeoutWin32(double timeout);
void _glfwPostEmptyEventWin32(void);
void _glfwGetCursorPosWin32(_GLFWwindow* window, double* xpos, double* ypos);
void _glfwSetCursorPosWin32(_GLFWwindow* window, double xpos, double ypos);
void _glfwSetCursorModeWin32(_GLFWwindow* window, int mode);
const char* _glfwGetScancodeNameWin32(int scancode);
int _glfwGetKeyScancodeWin32(int key);
GLFWbool _glfwCreateCursorWin32(_GLFWcursor* cursor, const GLFWimage* image, int xhot, int yhot);
GLFWbool _glfwCreateStandardCursorWin32(_GLFWcursor* cursor, int shape);
void _glfwDestroyCursorWin32(_GLFWcursor* cursor);
void _glfwSetCursorWin32(_GLFWwindow* window, _GLFWcursor* cursor);
void _glfwSetClipboardStringWin32(const char* string);
const char* _glfwGetClipboardStringWin32(void);
EGLenum _glfwGetEGLPlatformWin32(EGLint** attribs);
EGLNativeDisplayType _glfwGetEGLNativeDisplayWin32(void);
EGLNativeWindowType _glfwGetEGLNativeWindowWin32(_GLFWwindow* window);
void _glfwGetRequiredInstanceExtensionsWin32(char** extensions);
GLFWbool _glfwGetPhysicalDevicePresentationSupportWin32(VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily);
VkResult _glfwCreateWindowSurfaceWin32(VkInstance instance, _GLFWwindow* window, const VkAllocationCallbacks* allocator, VkSurfaceKHR* surface);
void _glfwFreeMonitorWin32(_GLFWmonitor* monitor);
void _glfwGetMonitorPosWin32(_GLFWmonitor* monitor, int* xpos, int* ypos);
void _glfwGetMonitorContentScaleWin32(_GLFWmonitor* monitor, float* xscale, float* yscale);
void _glfwGetMonitorWorkareaWin32(_GLFWmonitor* monitor, int* xpos, int* ypos, int* width, int* height);
GLFWvidmode* _glfwGetVideoModesWin32(_GLFWmonitor* monitor, int* count);
void _glfwGetVideoModeWin32(_GLFWmonitor* monitor, GLFWvidmode* mode);
GLFWbool _glfwGetGammaRampWin32(_GLFWmonitor* monitor, GLFWgammaramp* ramp);
void _glfwSetGammaRampWin32(_GLFWmonitor* monitor, const GLFWgammaramp* ramp);
GLFWbool _glfwInitJoysticksWin32(void);
void _glfwTerminateJoysticksWin32(void);
GLFWbool _glfwPollJoystickWin32(_GLFWjoystick* js, int mode);
const char* _glfwGetMappingNameWin32(void);
void _glfwUpdateGamepadGUIDWin32(char* guid);
GLFWbool _glfwInitWGL(void);
void _glfwTerminateWGL(void);
GLFWbool _glfwCreateContextWGL(_GLFWwindow* window,
const _GLFWctxconfig* ctxconfig,
const _GLFWfbconfig* fbconfig);
@@ -0,0 +1,48 @@
//========================================================================
// GLFW 3.4 Win32 - www.glfw.org
//------------------------------------------------------------------------
// Copyright (c) 2002-2006 Marcus Geelnard
// Copyright (c) 2006-2017 Camilla Löwy <elmindreda@glfw.org>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would
// be appreciated but is not required.
//
// 2. Altered source versions must be plainly marked as such, and must not
// be misrepresented as being the original software.
//
// 3. This notice may not be removed or altered from any source
// distribution.
//
//========================================================================
#include <windows.h>
#define GLFW_WIN32_TLS_STATE _GLFWtlsWin32 win32;
#define GLFW_WIN32_MUTEX_STATE _GLFWmutexWin32 win32;
// Win32-specific thread local storage data
//
typedef struct _GLFWtlsWin32
{
GLFWbool allocated;
DWORD index;
} _GLFWtlsWin32;
// Win32-specific mutex data
//
typedef struct _GLFWmutexWin32
{
GLFWbool allocated;
CRITICAL_SECTION section;
} _GLFWmutexWin32;
@@ -0,0 +1,38 @@
//========================================================================
// GLFW 3.4 Win32 - www.glfw.org
//------------------------------------------------------------------------
// Copyright (c) 2002-2006 Marcus Geelnard
// Copyright (c) 2006-2017 Camilla Löwy <elmindreda@glfw.org>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would
// be appreciated but is not required.
//
// 2. Altered source versions must be plainly marked as such, and must not
// be misrepresented as being the original software.
//
// 3. This notice may not be removed or altered from any source
// distribution.
//
//========================================================================
#include <windows.h>
#define GLFW_WIN32_LIBRARY_TIMER_STATE _GLFWtimerWin32 win32;
// Win32-specific global timer data
//
typedef struct _GLFWtimerWin32
{
uint64_t frequency;
} _GLFWtimerWin32;
@@ -4,13 +4,8 @@
#pragma once
#ifndef _GLFW_BUILD_DLL
#define _GLFW_BUILD_DLL
#endif // ! _GLFW_BUILD_DLL
#define WIN32_LEAN_AND_MEAN // 从 Windows 头文件中排除极少使用的内容
// Windows 头文件
#include <windows.h>
@@ -0,0 +1,26 @@
#pragma once
/*
#include "GLAD/gl.h"
#include "glfw3.h"
#include "StgSharpC.h"
*/
#ifndef SSG_INTERNAL
#define GGS_CINTERNAL
#if _WIN32
#define SSCAPI __declspec(dllexport)
#elif defined _LINUX_
#define SSCAPI __attribute__((visibility("default")))
#elif defined _APPLE_
#define SSCAPI __attribute__((visibility("default")))
#else
#defien SSCAPI
#endif
#define SSCDECL __cdecl
#endif //
@@ -1,45 +0,0 @@
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\vc143.pdb
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\vc143.idb
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\debuger.c.json
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\dllmain.c.json
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\gl.c.json
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\glsc2.c.json
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\wgl.c.json
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\linear.c.json
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\mat2.c.json
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\mat3.c.json
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\mat4.c.json
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\stgsharpgraphic.c.json
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\stgsharpgraphic.obj
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\stgsharpgraphic.cod
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\mat4.obj
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\mat4.cod
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\mat3.obj
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\mat3.cod
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\mat2.obj
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\mat2.cod
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\linear.obj
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\linear.cod
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\wgl.obj
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\wgl.cod
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\glsc2.obj
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\glsc2.cod
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\gl.obj
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\gl.cod
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\dllmain.obj
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\dllmain.cod
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\debuger.obj
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\debuger.cod
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic.lib
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic.exp
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic.dll
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\stgsharpgraphic.ilk
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic.pdb
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\stgsharpgraphic.tlog\cl.command.1.tlog
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\stgsharpgraphic.tlog\cl.items.tlog
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\stgsharpgraphic.tlog\cl.read.1.tlog
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\stgsharpgraphic.tlog\cl.write.1.tlog
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\stgsharpgraphic.tlog\link.command.1.tlog
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\stgsharpgraphic.tlog\link.read.1.tlog
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\stgsharpgraphic.tlog\link.write.1.tlog
d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\源代码\stgsharpgraphic\x64\debug\stgsharpgraphic.tlog\link.write.2u.tlog
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -1,153 +0,0 @@
{
"Version": "1.2",
"Data": {
"Source": "d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\code\\debuger.c",
"ProvidedModule": "",
"Includes": [
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\stgsharpgraphic.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\framework.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\windows.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\winapifamily.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\winpackagefamily.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\sdkddkver.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\excpt.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\vcruntime.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\sal.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\concurrencysal.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\vadefs.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\stdarg.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\windef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\minwindef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\specstrings.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\specstrings_strict.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\specstrings_undef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\driverspecs.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\sdv_driverspecs.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winnt.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\ctype.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_wctype.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\kernelspecs.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\basetsd.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\guiddef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\string.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_memory.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_memcpy_s.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\errno.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\vcruntime_string.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_wstring.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack8.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\apiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\ktmtypes.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winbase.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\apisetcconv.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\minwinbase.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\apiquery2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\processenv.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\fileapifromapp.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\fileapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\debugapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\utilapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\handleapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\errhandlingapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\fibersapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\namedpipeapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\profileapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\heapapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\ioapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\synchapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\interlockedapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\processthreadsapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\sysinfoapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\memoryapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\enclaveapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\threadpoollegacyapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\threadpoolapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\jobapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\jobapi2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wow64apiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\libloaderapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\securitybaseapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\namespaceapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\systemtopologyapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\processtopologyapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\securityappcontainer.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\realtimeapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\winerror.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\timezoneapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wingdi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winuser.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\tvout.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winnls.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\datetimeapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\stringapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winnls.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wincon.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wincontypes.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\consoleapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\consoleapi2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\consoleapi3.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winver.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\verrsrc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winreg.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\reason.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winnetwk.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\wnnc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\stralign.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winsvc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\mcx.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\imm.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\ime_cmodes.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\glad\\gl.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\khr\\khrplatform.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\stdint.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\glad\\wgl.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\glfw\\glfw3.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\stddef.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\immintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\wmmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\nmmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\smmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\tmmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\pmmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\emmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\xmmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\mmintrin.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\malloc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_malloc.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\zmmintrin.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\stdio.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_stdio_config.h"
]
}
}
@@ -1,140 +0,0 @@
; Listing generated by Microsoft (R) Optimizing Compiler Version 19.37.32824.0
include listing.inc
INCLUDELIB MSVCRTD
INCLUDELIB OLDNAMES
_DATA SEGMENT
COMM infolog:QWORD:0200H
_DATA ENDS
msvcjmc SEGMENT
__0ED14FEE_winpackagefamily@h DB 01H
__F92EF742_winapifamily@h DB 01H
__22E515EB_sdkddkver@h DB 01H
__9C03CD75_concurrencysal@h DB 01H
__CA64BAF1_sal@h DB 01H
__95655E73_vadefs@h DB 01H
__1D560A45_vcruntime@h DB 01H
__F214EFBF_excpt@h DB 01H
__D9B78EDA_stdarg@h DB 01H
__29F49F40_specstrings_undef@h DB 01H
__D0F42932_specstrings_strict@h DB 01H
__F00405FD_sdv_driverspecs@h DB 01H
__173E09CA_driverspecs@h DB 01H
__9A452361_specstrings@h DB 01H
__1B0272D9_corecrt@h DB 01H
__74484FB3_corecrt_wctype@h DB 01H
__1EC467ED_ctype@h DB 01H
__98517906_kernelspecs@h DB 01H
__D3497022_basetsd@h DB 01H
__61CC25A1_errno@h DB 01H
__7061C667_vcruntime_string@h DB 01H
__E4C945B4_corecrt_memcpy_s@h DB 01H
__8EAFF484_corecrt_memory@h DB 01H
__6490AEC5_corecrt_wstring@h DB 01H
__E8295E1E_string@h DB 01H
__7FCB5136_guiddef@h DB 01H
__FF8A9E11_pshpack4@h DB 01H
__D5438902_poppack@h DB 01H
__FB07E2A3_pshpack2@h DB 01H
__F6906775_pshpack8@h DB 01H
__F9415CFA_pshpack1@h DB 01H
__E58C6F1C_apiset@h DB 01H
__A5C52262_ktmtypes@h DB 01H
__FBBA8F9D_winnt@h DB 01H
__A32D3D2C_minwindef@h DB 01H
__7D798299_windef@h DB 01H
__9AE108E9_apisetcconv@h DB 01H
__9CE53D2C_minwinbase@h DB 01H
__5D0AA210_apiquery2@h DB 01H
__4DD4E726_processenv@h DB 01H
__3575CC96_fileapi@h DB 01H
__8EA220E6_fileapifromapp@h DB 01H
__BF9B31FE_debugapi@h DB 01H
__C3AFE134_utilapiset@h DB 01H
__76F69E51_handleapi@h DB 01H
__7E63D784_errhandlingapi@h DB 01H
__FFA7003C_fibersapi@h DB 01H
__8971CECF_namedpipeapi@h DB 01H
__46C9D8A6_profileapi@h DB 01H
__98D4F0A3_heapapi@h DB 01H
__50EF2A88_ioapiset@h DB 01H
__92EA1464_synchapi@h DB 01H
__A53D8AED_interlockedapi@h DB 01H
__B506CAAF_processthreadsapi@h DB 01H
__FF735694_sysinfoapi@h DB 01H
__29589789_memoryapi@h DB 01H
__E9C7A663_enclaveapi@h DB 01H
__D035F9F7_threadpoollegacyapiset@h DB 01H
__C899130C_threadpoolapiset@h DB 01H
__E0441EE7_jobapi@h DB 01H
__CEF86838_jobapi2@h DB 01H
__35AC6B9A_wow64apiset@h DB 01H
__C8AE41A5_libloaderapi@h DB 01H
__CC9E232D_securitybaseapi@h DB 01H
__C9D0C9B8_namespaceapi@h DB 01H
__30FF9CAD_systemtopologyapi@h DB 01H
__4D358795_processtopologyapi@h DB 01H
__40446D10_securityappcontainer@h DB 01H
__3A952EDF_realtimeapiset@h DB 01H
__F4865F4B_winerror@h DB 01H
__53C1BD93_timezoneapi@h DB 01H
__1FFBEDBF_winbase@h DB 01H
__43D3FA34_wingdi@h DB 01H
__D24A7391_tvout@h DB 01H
__7713A6C8_winuser@h DB 01H
__0B345F71_datetimeapi@h DB 01H
__9AC6960C_winnls@h DB 01H
__973A40A8_stringapiset@h DB 01H
__CC46FEE2_wincontypes@h DB 01H
__97D70BE1_consoleapi@h DB 01H
__27EC5E18_consoleapi2@h DB 01H
__262E342F_consoleapi3@h DB 01H
__641DCD70_wincon@h DB 01H
__5A96C7A7_verrsrc@h DB 01H
__B69C6FF2_winver@h DB 01H
__7AEB8C37_reason@h DB 01H
__59F1A8A9_winreg@h DB 01H
__EE0E2B7F_wnnc@h DB 01H
__DCDB7054_winnetwk@h DB 01H
__81DDEDE3_stralign@h DB 01H
__2134D1B4_winsvc@h DB 01H
__11C07376_mcx@h DB 01H
__577CE3E7_ime_cmodes@h DB 01H
__1E72C31E_imm@h DB 01H
__E15BF856_windows@h DB 01H
__DB6DF2FB_framework@h DB 01H
__ED683015_stdint@h DB 01H
__0A43AFA2_khrplatform@h DB 01H
__76346090_gl@h DB 01H
__2AAB3559_wgl@h DB 01H
__13F5961F_stddef@h DB 01H
__937078CB_glfw3@h DB 01H
__11E77DD3_mmintrin@h DB 01H
__45DED006_corecrt_malloc@h DB 01H
__FA77ED4C_malloc@h DB 01H
__9D836611_xmmintrin@h DB 01H
__F8E1EFDD_emmintrin@h DB 01H
__27408754_pmmintrin@h DB 01H
__9799F4D6_tmmintrin@h DB 01H
__BEA2E155_smmintrin@h DB 01H
__DBC06899_nmmintrin@h DB 01H
__0E7B92D7_wmmintrin@h DB 01H
__C5EFDFD0_zmmintrin@h DB 01H
__F2FB7D1A_immintrin@h DB 01H
__09B04B44_StgSharpGraphic@h DB 01H
__44420885_corecrt_stdio_config@h DB 01H
__AB601D8D_corecrt_wstdio@h DB 01H
__C1EC35D3_stdio@h DB 01H
__7C5B37FB_debuger@c DB 01H
msvcjmc ENDS
PUBLIC __JustMyCode_Default
; Function compile flags: /Odt
; COMDAT __JustMyCode_Default
_TEXT SEGMENT
__JustMyCode_Default PROC ; COMDAT
00000 c2 00 00 ret 0
__JustMyCode_Default ENDP
_TEXT ENDS
END
Binary file not shown.
@@ -1,150 +0,0 @@
{
"Version": "1.2",
"Data": {
"Source": "d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\code\\dllmain.c",
"ProvidedModule": "",
"Includes": [
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\framework.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\windows.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\winapifamily.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\winpackagefamily.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\sdkddkver.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\excpt.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\vcruntime.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\sal.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\concurrencysal.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\vadefs.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\stdarg.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\windef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\minwindef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\specstrings.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\specstrings_strict.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\specstrings_undef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\driverspecs.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\sdv_driverspecs.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winnt.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\ctype.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_wctype.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\kernelspecs.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\basetsd.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\guiddef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\string.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_memory.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_memcpy_s.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\errno.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\vcruntime_string.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_wstring.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack8.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\apiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\ktmtypes.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winbase.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\apisetcconv.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\minwinbase.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\apiquery2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\processenv.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\fileapifromapp.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\fileapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\debugapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\utilapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\handleapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\errhandlingapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\fibersapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\namedpipeapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\profileapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\heapapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\ioapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\synchapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\interlockedapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\processthreadsapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\sysinfoapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\memoryapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\enclaveapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\threadpoollegacyapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\threadpoolapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\jobapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\jobapi2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wow64apiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\libloaderapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\securitybaseapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\namespaceapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\systemtopologyapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\processtopologyapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\securityappcontainer.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\realtimeapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\winerror.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\timezoneapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wingdi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winuser.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\tvout.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winnls.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\datetimeapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\stringapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winnls.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wincon.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wincontypes.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\consoleapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\consoleapi2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\consoleapi3.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winver.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\verrsrc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winreg.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\reason.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winnetwk.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\wnnc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\stralign.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winsvc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\mcx.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\imm.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\ime_cmodes.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\stgsharpgraphic.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\glad\\gl.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\khr\\khrplatform.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\stdint.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\glad\\wgl.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\glfw\\glfw3.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\stddef.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\immintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\wmmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\nmmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\smmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\tmmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\pmmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\emmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\xmmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\mmintrin.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\malloc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_malloc.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\zmmintrin.h"
]
}
}
@@ -1,252 +0,0 @@
; Listing generated by Microsoft (R) Optimizing Compiler Version 19.37.32824.0
include listing.inc
INCLUDELIB MSVCRTD
INCLUDELIB OLDNAMES
PUBLIC defaultVecPtr
_BSS SEGMENT
defaultVecPtr DQ 01H DUP (?)
_BSS ENDS
_DATA SEGMENT
COMM infolog:QWORD:0200H
_DATA ENDS
msvcjmc SEGMENT
__0ED14FEE_winpackagefamily@h DB 01H
__F92EF742_winapifamily@h DB 01H
__22E515EB_sdkddkver@h DB 01H
__9C03CD75_concurrencysal@h DB 01H
__CA64BAF1_sal@h DB 01H
__95655E73_vadefs@h DB 01H
__1D560A45_vcruntime@h DB 01H
__F214EFBF_excpt@h DB 01H
__D9B78EDA_stdarg@h DB 01H
__29F49F40_specstrings_undef@h DB 01H
__D0F42932_specstrings_strict@h DB 01H
__F00405FD_sdv_driverspecs@h DB 01H
__173E09CA_driverspecs@h DB 01H
__9A452361_specstrings@h DB 01H
__1B0272D9_corecrt@h DB 01H
__74484FB3_corecrt_wctype@h DB 01H
__1EC467ED_ctype@h DB 01H
__98517906_kernelspecs@h DB 01H
__D3497022_basetsd@h DB 01H
__61CC25A1_errno@h DB 01H
__7061C667_vcruntime_string@h DB 01H
__E4C945B4_corecrt_memcpy_s@h DB 01H
__8EAFF484_corecrt_memory@h DB 01H
__6490AEC5_corecrt_wstring@h DB 01H
__E8295E1E_string@h DB 01H
__7FCB5136_guiddef@h DB 01H
__FF8A9E11_pshpack4@h DB 01H
__D5438902_poppack@h DB 01H
__FB07E2A3_pshpack2@h DB 01H
__F6906775_pshpack8@h DB 01H
__F9415CFA_pshpack1@h DB 01H
__E58C6F1C_apiset@h DB 01H
__A5C52262_ktmtypes@h DB 01H
__FBBA8F9D_winnt@h DB 01H
__A32D3D2C_minwindef@h DB 01H
__7D798299_windef@h DB 01H
__9AE108E9_apisetcconv@h DB 01H
__9CE53D2C_minwinbase@h DB 01H
__5D0AA210_apiquery2@h DB 01H
__4DD4E726_processenv@h DB 01H
__3575CC96_fileapi@h DB 01H
__8EA220E6_fileapifromapp@h DB 01H
__BF9B31FE_debugapi@h DB 01H
__C3AFE134_utilapiset@h DB 01H
__76F69E51_handleapi@h DB 01H
__7E63D784_errhandlingapi@h DB 01H
__FFA7003C_fibersapi@h DB 01H
__8971CECF_namedpipeapi@h DB 01H
__46C9D8A6_profileapi@h DB 01H
__98D4F0A3_heapapi@h DB 01H
__50EF2A88_ioapiset@h DB 01H
__92EA1464_synchapi@h DB 01H
__A53D8AED_interlockedapi@h DB 01H
__B506CAAF_processthreadsapi@h DB 01H
__FF735694_sysinfoapi@h DB 01H
__29589789_memoryapi@h DB 01H
__E9C7A663_enclaveapi@h DB 01H
__D035F9F7_threadpoollegacyapiset@h DB 01H
__C899130C_threadpoolapiset@h DB 01H
__E0441EE7_jobapi@h DB 01H
__CEF86838_jobapi2@h DB 01H
__35AC6B9A_wow64apiset@h DB 01H
__C8AE41A5_libloaderapi@h DB 01H
__CC9E232D_securitybaseapi@h DB 01H
__C9D0C9B8_namespaceapi@h DB 01H
__30FF9CAD_systemtopologyapi@h DB 01H
__4D358795_processtopologyapi@h DB 01H
__40446D10_securityappcontainer@h DB 01H
__3A952EDF_realtimeapiset@h DB 01H
__F4865F4B_winerror@h DB 01H
__53C1BD93_timezoneapi@h DB 01H
__1FFBEDBF_winbase@h DB 01H
__43D3FA34_wingdi@h DB 01H
__D24A7391_tvout@h DB 01H
__7713A6C8_winuser@h DB 01H
__0B345F71_datetimeapi@h DB 01H
__9AC6960C_winnls@h DB 01H
__973A40A8_stringapiset@h DB 01H
__CC46FEE2_wincontypes@h DB 01H
__97D70BE1_consoleapi@h DB 01H
__27EC5E18_consoleapi2@h DB 01H
__262E342F_consoleapi3@h DB 01H
__641DCD70_wincon@h DB 01H
__5A96C7A7_verrsrc@h DB 01H
__B69C6FF2_winver@h DB 01H
__7AEB8C37_reason@h DB 01H
__59F1A8A9_winreg@h DB 01H
__EE0E2B7F_wnnc@h DB 01H
__DCDB7054_winnetwk@h DB 01H
__81DDEDE3_stralign@h DB 01H
__2134D1B4_winsvc@h DB 01H
__11C07376_mcx@h DB 01H
__577CE3E7_ime_cmodes@h DB 01H
__1E72C31E_imm@h DB 01H
__E15BF856_windows@h DB 01H
__DB6DF2FB_framework@h DB 01H
__ED683015_stdint@h DB 01H
__0A43AFA2_khrplatform@h DB 01H
__76346090_gl@h DB 01H
__2AAB3559_wgl@h DB 01H
__13F5961F_stddef@h DB 01H
__937078CB_glfw3@h DB 01H
__11E77DD3_mmintrin@h DB 01H
__45DED006_corecrt_malloc@h DB 01H
__FA77ED4C_malloc@h DB 01H
__9D836611_xmmintrin@h DB 01H
__F8E1EFDD_emmintrin@h DB 01H
__27408754_pmmintrin@h DB 01H
__9799F4D6_tmmintrin@h DB 01H
__BEA2E155_smmintrin@h DB 01H
__DBC06899_nmmintrin@h DB 01H
__0E7B92D7_wmmintrin@h DB 01H
__C5EFDFD0_zmmintrin@h DB 01H
__F2FB7D1A_immintrin@h DB 01H
__09B04B44_StgSharpGraphic@h DB 01H
__0C04C777_dllmain@c DB 01H
msvcjmc ENDS
PUBLIC DllMain
PUBLIC __JustMyCode_Default
EXTRN __imp__aligned_malloc:PROC
EXTRN _RTC_InitBase:PROC
EXTRN _RTC_Shutdown:PROC
EXTRN __CheckForDebuggerJustMyCode:PROC
; COMDAT pdata
pdata SEGMENT
$pdata$DllMain DD imagerel $LN12
DD imagerel $LN12+111
DD imagerel $unwind$DllMain
pdata ENDS
; COMDAT rtc$TMZ
rtc$TMZ SEGMENT
_RTC_Shutdown.rtc$TMZ DQ FLAT:_RTC_Shutdown
rtc$TMZ ENDS
; COMDAT rtc$IMZ
rtc$IMZ SEGMENT
_RTC_InitBase.rtc$IMZ DQ FLAT:_RTC_InitBase
rtc$IMZ ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$DllMain DD 025051c01H
DD 0117231cH
DD 07010001fH
DD 0500fH
xdata ENDS
; Function compile flags: /Odt
; COMDAT __JustMyCode_Default
_TEXT SEGMENT
__JustMyCode_Default PROC ; COMDAT
00000 c2 00 00 ret 0
__JustMyCode_Default ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpGraphic\code\dllmain.c
; COMDAT DllMain
_TEXT SEGMENT
tv64 = 192
hModule$ = 240
ul_reason_for_call$ = 248
lpReserved$ = 256
DllMain PROC ; COMDAT
; 17 : {
$LN12:
00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
00005 89 54 24 10 mov DWORD PTR [rsp+16], edx
00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000e 55 push rbp
0000f 57 push rdi
00010 48 81 ec f8 00
00 00 sub rsp, 248 ; 000000f8H
00017 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
0001c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__0C04C777_dllmain@c
00023 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
; 18 : switch (ul_reason_for_call)
00028 8b 85 f8 00 00
00 mov eax, DWORD PTR ul_reason_for_call$[rbp]
0002e 89 85 c0 00 00
00 mov DWORD PTR tv64[rbp], eax
00034 83 bd c0 00 00
00 01 cmp DWORD PTR tv64[rbp], 1
0003b 74 02 je SHORT $LN7@DllMain
0003d eb 21 jmp SHORT $LN2@DllMain
$LN7@DllMain:
$LN6@DllMain:
; 19 : {
; 20 : case DLL_PROCESS_ATTACH:
; 21 : do
; 22 : {
; 23 : defaultVecPtr = _aligned_malloc(sizeof(__m128),16);
0003f ba 10 00 00 00 mov edx, 16
00044 b9 10 00 00 00 mov ecx, 16
00049 ff 15 00 00 00
00 call QWORD PTR __imp__aligned_malloc
0004f 48 89 05 00 00
00 00 mov QWORD PTR defaultVecPtr, rax
; 24 : } while (defaultVecPtr == NULL);
00056 48 83 3d 00 00
00 00 00 cmp QWORD PTR defaultVecPtr, 0
0005e 74 df je SHORT $LN6@DllMain
$LN2@DllMain:
; 25 :
; 26 :
; 27 : case DLL_THREAD_ATTACH:
; 28 :
; 29 :
; 30 : case DLL_THREAD_DETACH:
; 31 :
; 32 :
; 33 : case DLL_PROCESS_DETACH:
; 34 :
; 35 :
; 36 :
; 37 : break;
; 38 : }
; 39 : return TRUE;
00060 b8 01 00 00 00 mov eax, 1
; 40 : }
00065 48 8d a5 d8 00
00 00 lea rsp, QWORD PTR [rbp+216]
0006c 5f pop rdi
0006d 5d pop rbp
0006e c3 ret 0
DllMain ENDP
_TEXT ENDS
END
Binary file not shown.
@@ -1,239 +0,0 @@
{
"Version": "1.2",
"Data": {
"Source": "d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\code\\glad\\gl.c",
"ProvidedModule": "",
"Includes": [
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\stdio.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\vcruntime.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\sal.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\concurrencysal.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\vadefs.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_stdio_config.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\stdlib.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_malloc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_search.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\stddef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_wstdlib.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\limits.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\string.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_memory.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_memcpy_s.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\errno.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\vcruntime_string.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_wstring.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\glad\\gl.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\winapifamily.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\winpackagefamily.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\khr\\khrplatform.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\stdint.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\windows.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\sdkddkver.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\excpt.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\stdarg.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\windef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\minwindef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\specstrings.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\specstrings_strict.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\specstrings_undef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\driverspecs.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\sdv_driverspecs.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winnt.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\ctype.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_wctype.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\kernelspecs.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\basetsd.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\guiddef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack8.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\apiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\ktmtypes.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winbase.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\apisetcconv.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\minwinbase.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\apiquery2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\processenv.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\fileapifromapp.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\fileapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\debugapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\utilapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\handleapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\errhandlingapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\fibersapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\namedpipeapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\profileapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\heapapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\ioapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\synchapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\interlockedapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\processthreadsapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\sysinfoapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\memoryapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\enclaveapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\threadpoollegacyapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\threadpoolapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\jobapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\jobapi2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wow64apiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\libloaderapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\securitybaseapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\namespaceapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\systemtopologyapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\processtopologyapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\securityappcontainer.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\realtimeapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\winerror.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\timezoneapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wingdi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winuser.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\tvout.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winnls.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\datetimeapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\stringapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winnls.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wincon.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wincontypes.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\consoleapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\consoleapi2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\consoleapi3.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winver.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\verrsrc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winreg.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\reason.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winnetwk.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\wnnc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\cderr.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\dde.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\ddeml.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\dlgs.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\lzexpand.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\mmsystem.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\mmsyscom.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\mciapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\mmiscapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\mmiscapi2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\playsoundapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\mmeapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\timeapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\joystickapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\nb30.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\rpc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack8.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\rpcdce.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\rpcdcep.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\rpcnsi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\rpcnterr.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\rpcasync.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack8.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\shellapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winperf.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack8.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winsock.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\inaddr.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wincrypt.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\bcrypt.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\ncrypt.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\dpapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winefs.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winscard.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\wtypes.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\rpcndr.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack8.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\rpcnsip.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\rpcsal.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\wtypesbase.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\guiddef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winioctl.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\winsmcrd.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winspool.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\prsht.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack8.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\ole2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack8.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\objbase.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack8.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\combaseapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack8.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\unknwnbase.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\objidlbase.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\guiddef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\cguid.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\coml2api.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\objidl.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\unknwn.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\propidlbase.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\oaidl.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\urlmon.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\oleidl.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\servprov.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\msxml.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\propidl.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\oleauto.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack8.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\commdlg.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\prsht.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\stralign.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winsvc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\mcx.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\imm.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\ime_cmodes.h"
]
}
}
File diff suppressed because it is too large Load Diff
Binary file not shown.
@@ -1,34 +0,0 @@
{
"Version": "1.2",
"Data": {
"Source": "d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\code\\glad\\glsc2.c",
"ProvidedModule": "",
"Includes": [
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\stdio.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\vcruntime.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\sal.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\concurrencysal.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\vadefs.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_stdio_config.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\stdlib.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_malloc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_search.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\stddef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_wstdlib.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\limits.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\string.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_memory.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_memcpy_s.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\errno.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\vcruntime_string.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_wstring.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\glad\\glsc2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\winapifamily.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\winpackagefamily.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\khr\\khrplatform.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\stdint.h"
]
}
}
File diff suppressed because it is too large Load Diff
Binary file not shown.
@@ -1,154 +0,0 @@
{
"Version": "1.2",
"Data": {
"Source": "d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\code\\linear.c",
"ProvidedModule": "",
"Includes": [
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\stgsharpgraphic.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\framework.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\windows.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\winapifamily.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\winpackagefamily.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\sdkddkver.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\excpt.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\vcruntime.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\sal.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\concurrencysal.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\vadefs.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\stdarg.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\windef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\minwindef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\specstrings.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\specstrings_strict.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\specstrings_undef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\driverspecs.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\sdv_driverspecs.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winnt.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\ctype.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_wctype.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\kernelspecs.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\basetsd.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\guiddef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\string.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_memory.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_memcpy_s.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\errno.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\vcruntime_string.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_wstring.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack8.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\apiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\ktmtypes.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winbase.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\apisetcconv.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\minwinbase.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\apiquery2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\processenv.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\fileapifromapp.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\fileapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\debugapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\utilapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\handleapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\errhandlingapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\fibersapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\namedpipeapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\profileapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\heapapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\ioapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\synchapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\interlockedapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\processthreadsapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\sysinfoapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\memoryapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\enclaveapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\threadpoollegacyapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\threadpoolapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\jobapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\jobapi2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wow64apiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\libloaderapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\securitybaseapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\namespaceapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\systemtopologyapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\processtopologyapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\securityappcontainer.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\realtimeapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\winerror.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\timezoneapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wingdi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winuser.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\tvout.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winnls.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\datetimeapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\stringapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winnls.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wincon.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wincontypes.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\consoleapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\consoleapi2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\consoleapi3.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winver.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\verrsrc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winreg.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\reason.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winnetwk.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\wnnc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\stralign.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winsvc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\mcx.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\imm.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\ime_cmodes.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\glad\\gl.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\khr\\khrplatform.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\stdint.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\glad\\wgl.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\glfw\\glfw3.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\stddef.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\immintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\wmmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\nmmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\smmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\tmmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\pmmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\emmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\xmmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\mmintrin.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\malloc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_malloc.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\zmmintrin.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\stdio.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_stdio_config.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\stdalign.h"
]
}
}
@@ -1,199 +0,0 @@
; Listing generated by Microsoft (R) Optimizing Compiler Version 19.37.32824.0
include listing.inc
INCLUDELIB MSVCRTD
INCLUDELIB OLDNAMES
_DATA SEGMENT
COMM infolog:QWORD:0200H
_DATA ENDS
msvcjmc SEGMENT
__0ED14FEE_winpackagefamily@h DB 01H
__F92EF742_winapifamily@h DB 01H
__22E515EB_sdkddkver@h DB 01H
__9C03CD75_concurrencysal@h DB 01H
__CA64BAF1_sal@h DB 01H
__95655E73_vadefs@h DB 01H
__1D560A45_vcruntime@h DB 01H
__F214EFBF_excpt@h DB 01H
__D9B78EDA_stdarg@h DB 01H
__29F49F40_specstrings_undef@h DB 01H
__D0F42932_specstrings_strict@h DB 01H
__F00405FD_sdv_driverspecs@h DB 01H
__173E09CA_driverspecs@h DB 01H
__9A452361_specstrings@h DB 01H
__1B0272D9_corecrt@h DB 01H
__74484FB3_corecrt_wctype@h DB 01H
__1EC467ED_ctype@h DB 01H
__98517906_kernelspecs@h DB 01H
__D3497022_basetsd@h DB 01H
__61CC25A1_errno@h DB 01H
__7061C667_vcruntime_string@h DB 01H
__E4C945B4_corecrt_memcpy_s@h DB 01H
__8EAFF484_corecrt_memory@h DB 01H
__6490AEC5_corecrt_wstring@h DB 01H
__E8295E1E_string@h DB 01H
__7FCB5136_guiddef@h DB 01H
__FF8A9E11_pshpack4@h DB 01H
__D5438902_poppack@h DB 01H
__FB07E2A3_pshpack2@h DB 01H
__F6906775_pshpack8@h DB 01H
__F9415CFA_pshpack1@h DB 01H
__E58C6F1C_apiset@h DB 01H
__A5C52262_ktmtypes@h DB 01H
__FBBA8F9D_winnt@h DB 01H
__A32D3D2C_minwindef@h DB 01H
__7D798299_windef@h DB 01H
__9AE108E9_apisetcconv@h DB 01H
__9CE53D2C_minwinbase@h DB 01H
__5D0AA210_apiquery2@h DB 01H
__4DD4E726_processenv@h DB 01H
__3575CC96_fileapi@h DB 01H
__8EA220E6_fileapifromapp@h DB 01H
__BF9B31FE_debugapi@h DB 01H
__C3AFE134_utilapiset@h DB 01H
__76F69E51_handleapi@h DB 01H
__7E63D784_errhandlingapi@h DB 01H
__FFA7003C_fibersapi@h DB 01H
__8971CECF_namedpipeapi@h DB 01H
__46C9D8A6_profileapi@h DB 01H
__98D4F0A3_heapapi@h DB 01H
__50EF2A88_ioapiset@h DB 01H
__92EA1464_synchapi@h DB 01H
__A53D8AED_interlockedapi@h DB 01H
__B506CAAF_processthreadsapi@h DB 01H
__FF735694_sysinfoapi@h DB 01H
__29589789_memoryapi@h DB 01H
__E9C7A663_enclaveapi@h DB 01H
__D035F9F7_threadpoollegacyapiset@h DB 01H
__C899130C_threadpoolapiset@h DB 01H
__E0441EE7_jobapi@h DB 01H
__CEF86838_jobapi2@h DB 01H
__35AC6B9A_wow64apiset@h DB 01H
__C8AE41A5_libloaderapi@h DB 01H
__CC9E232D_securitybaseapi@h DB 01H
__C9D0C9B8_namespaceapi@h DB 01H
__30FF9CAD_systemtopologyapi@h DB 01H
__4D358795_processtopologyapi@h DB 01H
__40446D10_securityappcontainer@h DB 01H
__3A952EDF_realtimeapiset@h DB 01H
__F4865F4B_winerror@h DB 01H
__53C1BD93_timezoneapi@h DB 01H
__1FFBEDBF_winbase@h DB 01H
__43D3FA34_wingdi@h DB 01H
__D24A7391_tvout@h DB 01H
__7713A6C8_winuser@h DB 01H
__0B345F71_datetimeapi@h DB 01H
__9AC6960C_winnls@h DB 01H
__973A40A8_stringapiset@h DB 01H
__CC46FEE2_wincontypes@h DB 01H
__97D70BE1_consoleapi@h DB 01H
__27EC5E18_consoleapi2@h DB 01H
__262E342F_consoleapi3@h DB 01H
__641DCD70_wincon@h DB 01H
__5A96C7A7_verrsrc@h DB 01H
__B69C6FF2_winver@h DB 01H
__7AEB8C37_reason@h DB 01H
__59F1A8A9_winreg@h DB 01H
__EE0E2B7F_wnnc@h DB 01H
__DCDB7054_winnetwk@h DB 01H
__81DDEDE3_stralign@h DB 01H
__2134D1B4_winsvc@h DB 01H
__11C07376_mcx@h DB 01H
__577CE3E7_ime_cmodes@h DB 01H
__1E72C31E_imm@h DB 01H
__E15BF856_windows@h DB 01H
__DB6DF2FB_framework@h DB 01H
__ED683015_stdint@h DB 01H
__0A43AFA2_khrplatform@h DB 01H
__76346090_gl@h DB 01H
__2AAB3559_wgl@h DB 01H
__13F5961F_stddef@h DB 01H
__937078CB_glfw3@h DB 01H
__11E77DD3_mmintrin@h DB 01H
__45DED006_corecrt_malloc@h DB 01H
__FA77ED4C_malloc@h DB 01H
__9D836611_xmmintrin@h DB 01H
__F8E1EFDD_emmintrin@h DB 01H
__27408754_pmmintrin@h DB 01H
__9799F4D6_tmmintrin@h DB 01H
__BEA2E155_smmintrin@h DB 01H
__DBC06899_nmmintrin@h DB 01H
__0E7B92D7_wmmintrin@h DB 01H
__C5EFDFD0_zmmintrin@h DB 01H
__F2FB7D1A_immintrin@h DB 01H
__09B04B44_StgSharpGraphic@h DB 01H
__44420885_corecrt_stdio_config@h DB 01H
__AB601D8D_corecrt_wstdio@h DB 01H
__C1EC35D3_stdio@h DB 01H
__89AE49E7_stdalign@h DB 01H
__A6DEAFC9_linear@c DB 01H
msvcjmc ENDS
PUBLIC set_m128ptr_default
PUBLIC __JustMyCode_Default
EXTRN _RTC_InitBase:PROC
EXTRN _RTC_Shutdown:PROC
EXTRN __CheckForDebuggerJustMyCode:PROC
EXTRN defaultVecPtr:QWORD
; COMDAT pdata
pdata SEGMENT
$pdata$set_m128ptr_default DD imagerel $LN3
DD imagerel $LN3+44
DD imagerel $unwind$set_m128ptr_default
pdata ENDS
; COMDAT rtc$TMZ
rtc$TMZ SEGMENT
_RTC_Shutdown.rtc$TMZ DQ FLAT:_RTC_Shutdown
rtc$TMZ ENDS
; COMDAT rtc$IMZ
rtc$IMZ SEGMENT
_RTC_InitBase.rtc$IMZ DQ FLAT:_RTC_InitBase
rtc$IMZ ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$set_m128ptr_default DD 025050f01H
DD 010a230fH
DD 07003001dH
DD 05002H
xdata ENDS
; Function compile flags: /Odt
; COMDAT __JustMyCode_Default
_TEXT SEGMENT
__JustMyCode_Default PROC ; COMDAT
00000 c2 00 00 ret 0
__JustMyCode_Default ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpGraphic\code\linear.c
; COMDAT set_m128ptr_default
_TEXT SEGMENT
set_m128ptr_default PROC ; COMDAT
; 22 : {
$LN3:
00000 40 55 push rbp
00002 57 push rdi
00003 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
0000a 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
0000f 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__A6DEAFC9_linear@c
00016 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
; 23 : return defaultVecPtr;
0001b 48 8b 05 00 00
00 00 mov rax, QWORD PTR defaultVecPtr
; 24 : }
00022 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
00029 5f pop rdi
0002a 5d pop rbp
0002b c3 ret 0
set_m128ptr_default ENDP
_TEXT ENDS
END
Binary file not shown.
@@ -1,150 +0,0 @@
{
"Version": "1.2",
"Data": {
"Source": "d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\code\\mat2.c",
"ProvidedModule": "",
"Includes": [
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\stgsharpgraphic.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\framework.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\windows.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\winapifamily.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\winpackagefamily.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\sdkddkver.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\excpt.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\vcruntime.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\sal.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\concurrencysal.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\vadefs.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\stdarg.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\windef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\minwindef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\specstrings.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\specstrings_strict.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\specstrings_undef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\driverspecs.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\sdv_driverspecs.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winnt.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\ctype.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_wctype.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\kernelspecs.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\basetsd.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\guiddef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\string.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_memory.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_memcpy_s.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\errno.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\vcruntime_string.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_wstring.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack8.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\apiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\ktmtypes.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winbase.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\apisetcconv.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\minwinbase.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\apiquery2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\processenv.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\fileapifromapp.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\fileapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\debugapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\utilapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\handleapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\errhandlingapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\fibersapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\namedpipeapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\profileapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\heapapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\ioapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\synchapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\interlockedapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\processthreadsapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\sysinfoapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\memoryapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\enclaveapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\threadpoollegacyapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\threadpoolapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\jobapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\jobapi2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wow64apiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\libloaderapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\securitybaseapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\namespaceapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\systemtopologyapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\processtopologyapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\securityappcontainer.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\realtimeapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\winerror.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\timezoneapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wingdi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winuser.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\tvout.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winnls.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\datetimeapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\stringapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winnls.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wincon.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wincontypes.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\consoleapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\consoleapi2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\consoleapi3.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winver.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\verrsrc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winreg.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\reason.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winnetwk.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\wnnc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\stralign.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winsvc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\mcx.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\imm.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\ime_cmodes.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\glad\\gl.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\khr\\khrplatform.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\stdint.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\glad\\wgl.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\glfw\\glfw3.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\stddef.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\immintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\wmmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\nmmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\smmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\tmmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\pmmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\emmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\xmmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\mmintrin.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\malloc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_malloc.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\zmmintrin.h"
]
}
}
@@ -1,484 +0,0 @@
; Listing generated by Microsoft (R) Optimizing Compiler Version 19.37.32824.0
include listing.inc
INCLUDELIB MSVCRTD
INCLUDELIB OLDNAMES
_DATA SEGMENT
COMM infolog:QWORD:0200H
_DATA ENDS
msvcjmc SEGMENT
__0ED14FEE_winpackagefamily@h DB 01H
__F92EF742_winapifamily@h DB 01H
__22E515EB_sdkddkver@h DB 01H
__9C03CD75_concurrencysal@h DB 01H
__CA64BAF1_sal@h DB 01H
__95655E73_vadefs@h DB 01H
__1D560A45_vcruntime@h DB 01H
__F214EFBF_excpt@h DB 01H
__D9B78EDA_stdarg@h DB 01H
__29F49F40_specstrings_undef@h DB 01H
__D0F42932_specstrings_strict@h DB 01H
__F00405FD_sdv_driverspecs@h DB 01H
__173E09CA_driverspecs@h DB 01H
__9A452361_specstrings@h DB 01H
__1B0272D9_corecrt@h DB 01H
__74484FB3_corecrt_wctype@h DB 01H
__1EC467ED_ctype@h DB 01H
__98517906_kernelspecs@h DB 01H
__D3497022_basetsd@h DB 01H
__61CC25A1_errno@h DB 01H
__7061C667_vcruntime_string@h DB 01H
__E4C945B4_corecrt_memcpy_s@h DB 01H
__8EAFF484_corecrt_memory@h DB 01H
__6490AEC5_corecrt_wstring@h DB 01H
__E8295E1E_string@h DB 01H
__7FCB5136_guiddef@h DB 01H
__FF8A9E11_pshpack4@h DB 01H
__D5438902_poppack@h DB 01H
__FB07E2A3_pshpack2@h DB 01H
__F6906775_pshpack8@h DB 01H
__F9415CFA_pshpack1@h DB 01H
__E58C6F1C_apiset@h DB 01H
__A5C52262_ktmtypes@h DB 01H
__FBBA8F9D_winnt@h DB 01H
__A32D3D2C_minwindef@h DB 01H
__7D798299_windef@h DB 01H
__9AE108E9_apisetcconv@h DB 01H
__9CE53D2C_minwinbase@h DB 01H
__5D0AA210_apiquery2@h DB 01H
__4DD4E726_processenv@h DB 01H
__3575CC96_fileapi@h DB 01H
__8EA220E6_fileapifromapp@h DB 01H
__BF9B31FE_debugapi@h DB 01H
__C3AFE134_utilapiset@h DB 01H
__76F69E51_handleapi@h DB 01H
__7E63D784_errhandlingapi@h DB 01H
__FFA7003C_fibersapi@h DB 01H
__8971CECF_namedpipeapi@h DB 01H
__46C9D8A6_profileapi@h DB 01H
__98D4F0A3_heapapi@h DB 01H
__50EF2A88_ioapiset@h DB 01H
__92EA1464_synchapi@h DB 01H
__A53D8AED_interlockedapi@h DB 01H
__B506CAAF_processthreadsapi@h DB 01H
__FF735694_sysinfoapi@h DB 01H
__29589789_memoryapi@h DB 01H
__E9C7A663_enclaveapi@h DB 01H
__D035F9F7_threadpoollegacyapiset@h DB 01H
__C899130C_threadpoolapiset@h DB 01H
__E0441EE7_jobapi@h DB 01H
__CEF86838_jobapi2@h DB 01H
__35AC6B9A_wow64apiset@h DB 01H
__C8AE41A5_libloaderapi@h DB 01H
__CC9E232D_securitybaseapi@h DB 01H
__C9D0C9B8_namespaceapi@h DB 01H
__30FF9CAD_systemtopologyapi@h DB 01H
__4D358795_processtopologyapi@h DB 01H
__40446D10_securityappcontainer@h DB 01H
__3A952EDF_realtimeapiset@h DB 01H
__F4865F4B_winerror@h DB 01H
__53C1BD93_timezoneapi@h DB 01H
__1FFBEDBF_winbase@h DB 01H
__43D3FA34_wingdi@h DB 01H
__D24A7391_tvout@h DB 01H
__7713A6C8_winuser@h DB 01H
__0B345F71_datetimeapi@h DB 01H
__9AC6960C_winnls@h DB 01H
__973A40A8_stringapiset@h DB 01H
__CC46FEE2_wincontypes@h DB 01H
__97D70BE1_consoleapi@h DB 01H
__27EC5E18_consoleapi2@h DB 01H
__262E342F_consoleapi3@h DB 01H
__641DCD70_wincon@h DB 01H
__5A96C7A7_verrsrc@h DB 01H
__B69C6FF2_winver@h DB 01H
__7AEB8C37_reason@h DB 01H
__59F1A8A9_winreg@h DB 01H
__EE0E2B7F_wnnc@h DB 01H
__DCDB7054_winnetwk@h DB 01H
__81DDEDE3_stralign@h DB 01H
__2134D1B4_winsvc@h DB 01H
__11C07376_mcx@h DB 01H
__577CE3E7_ime_cmodes@h DB 01H
__1E72C31E_imm@h DB 01H
__E15BF856_windows@h DB 01H
__DB6DF2FB_framework@h DB 01H
__ED683015_stdint@h DB 01H
__0A43AFA2_khrplatform@h DB 01H
__76346090_gl@h DB 01H
__2AAB3559_wgl@h DB 01H
__13F5961F_stddef@h DB 01H
__937078CB_glfw3@h DB 01H
__11E77DD3_mmintrin@h DB 01H
__45DED006_corecrt_malloc@h DB 01H
__FA77ED4C_malloc@h DB 01H
__9D836611_xmmintrin@h DB 01H
__F8E1EFDD_emmintrin@h DB 01H
__27408754_pmmintrin@h DB 01H
__9799F4D6_tmmintrin@h DB 01H
__BEA2E155_smmintrin@h DB 01H
__DBC06899_nmmintrin@h DB 01H
__0E7B92D7_wmmintrin@h DB 01H
__C5EFDFD0_zmmintrin@h DB 01H
__F2FB7D1A_immintrin@h DB 01H
__09B04B44_StgSharpGraphic@h DB 01H
__95997DE0_mat2@c DB 01H
msvcjmc ENDS
PUBLIC transpose2to3
PUBLIC transpose2to4
PUBLIC deinit_mat2
PUBLIC __JustMyCode_Default
EXTRN __imp__aligned_free:PROC
EXTRN _RTC_InitBase:PROC
EXTRN _RTC_Shutdown:PROC
EXTRN __CheckForDebuggerJustMyCode:PROC
EXTRN defaultVecPtr:QWORD
; COMDAT pdata
pdata SEGMENT
$pdata$transpose2to3 DD imagerel $LN3
DD imagerel $LN3+321
DD imagerel $unwind$transpose2to3
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$transpose2to4 DD imagerel $LN3
DD imagerel $LN3+356
DD imagerel $unwind$transpose2to4
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$deinit_mat2 DD imagerel $LN3
DD imagerel $LN3+54
DD imagerel $unwind$deinit_mat2
pdata ENDS
; COMDAT rtc$TMZ
rtc$TMZ SEGMENT
_RTC_Shutdown.rtc$TMZ DQ FLAT:_RTC_Shutdown
rtc$TMZ ENDS
; COMDAT rtc$IMZ
rtc$IMZ SEGMENT
_RTC_InitBase.rtc$IMZ DQ FLAT:_RTC_InitBase
rtc$IMZ ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$deinit_mat2 DD 025051301H
DD 010e2313H
DD 07007001dH
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$transpose2to4 DD 025051801H
DD 01132318H
DD 0700c0029H
DD 0500bH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$transpose2to3 DD 025051801H
DD 01132318H
DD 0700c0029H
DD 0500bH
xdata ENDS
; Function compile flags: /Odt
; COMDAT __JustMyCode_Default
_TEXT SEGMENT
__JustMyCode_Default PROC ; COMDAT
00000 c2 00 00 ret 0
__JustMyCode_Default ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpGraphic\code\mat2.c
; COMDAT deinit_mat2
_TEXT SEGMENT
mat$ = 224
deinit_mat2 PROC ; COMDAT
; 28 : {
$LN3:
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__95997DE0_mat2@c
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
; 29 : _aligned_free(mat);
0001f 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR mat$[rbp]
00026 ff 15 00 00 00
00 call QWORD PTR __imp__aligned_free
; 30 : }
0002c 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
00033 5f pop rdi
00034 5d pop rbp
00035 c3 ret 0
deinit_mat2 ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpGraphic\code\mat2.c
; COMDAT transpose2to4
_TEXT SEGMENT
t0$ = 16
t1$ = 64
source$ = 320
target$ = 328
transpose2to4 PROC ; COMDAT
; 17 : {
$LN3:
00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000a 55 push rbp
0000b 57 push rdi
0000c 48 81 ec 48 01
00 00 sub rsp, 328 ; 00000148H
00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00018 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__95997DE0_mat2@c
0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
; 18 : __m128 t0 = _mm_shuffle_ps(ALIGN(source->m[0][0]), ALIGN(source->m[0][1]), _MM_SHUFFLE(1, 0, 1, 0));
00024 b8 08 00 00 00 mov eax, 8
00029 48 6b c0 00 imul rax, rax, 0
0002d 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR source$[rbp]
00034 48 03 c8 add rcx, rax
00037 48 8b c1 mov rax, rcx
0003a b9 04 00 00 00 mov ecx, 4
0003f 48 6b c9 01 imul rcx, rcx, 1
00043 48 03 c1 add rax, rcx
00046 0f 10 00 movups xmm0, XMMWORD PTR [rax]
00049 b8 08 00 00 00 mov eax, 8
0004e 48 6b c0 00 imul rax, rax, 0
00052 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR source$[rbp]
00059 48 03 c8 add rcx, rax
0005c 48 8b c1 mov rax, rcx
0005f b9 04 00 00 00 mov ecx, 4
00064 48 6b c9 00 imul rcx, rcx, 0
00068 48 03 c1 add rax, rcx
0006b 0f 10 08 movups xmm1, XMMWORD PTR [rax]
0006e 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H
00072 0f 28 c1 movaps xmm0, xmm1
00075 0f 29 45 10 movaps XMMWORD PTR t0$[rbp], xmm0
; 19 : __m128 t1 = _mm_shuffle_ps(ALIGN(source->m[0][0]), ALIGN(source->m[0][1]), _MM_SHUFFLE(3, 2, 3, 2));
00079 b8 08 00 00 00 mov eax, 8
0007e 48 6b c0 00 imul rax, rax, 0
00082 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR source$[rbp]
00089 48 03 c8 add rcx, rax
0008c 48 8b c1 mov rax, rcx
0008f b9 04 00 00 00 mov ecx, 4
00094 48 6b c9 01 imul rcx, rcx, 1
00098 48 03 c1 add rax, rcx
0009b 0f 10 00 movups xmm0, XMMWORD PTR [rax]
0009e b8 08 00 00 00 mov eax, 8
000a3 48 6b c0 00 imul rax, rax, 0
000a7 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR source$[rbp]
000ae 48 03 c8 add rcx, rax
000b1 48 8b c1 mov rax, rcx
000b4 b9 04 00 00 00 mov ecx, 4
000b9 48 6b c9 00 imul rcx, rcx, 0
000bd 48 03 c1 add rax, rcx
000c0 0f 10 08 movups xmm1, XMMWORD PTR [rax]
000c3 0f c6 c8 ee shufps xmm1, xmm0, 238 ; 000000eeH
000c7 0f 28 c1 movaps xmm0, xmm1
000ca 0f 29 45 40 movaps XMMWORD PTR t1$[rbp], xmm0
; 20 :
; 21 : target->colum[0] = _mm_shuffle_ps(t0, *defaultVecPtr, _MM_SHUFFLE(2, 0, 2, 0));
000ce 48 8b 05 00 00
00 00 mov rax, QWORD PTR defaultVecPtr
000d5 0f 28 45 10 movaps xmm0, XMMWORD PTR t0$[rbp]
000d9 0f c6 00 88 shufps xmm0, XMMWORD PTR [rax], 136 ; 00000088H
000dd b8 10 00 00 00 mov eax, 16
000e2 48 6b c0 00 imul rax, rax, 0
000e6 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR target$[rbp]
000ed 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
; 22 : target->colum[1] = _mm_shuffle_ps(t0, *defaultVecPtr, _MM_SHUFFLE(3, 1, 3, 1));
000f1 48 8b 05 00 00
00 00 mov rax, QWORD PTR defaultVecPtr
000f8 0f 28 45 10 movaps xmm0, XMMWORD PTR t0$[rbp]
000fc 0f c6 00 dd shufps xmm0, XMMWORD PTR [rax], 221 ; 000000ddH
00100 b8 10 00 00 00 mov eax, 16
00105 48 6b c0 01 imul rax, rax, 1
00109 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR target$[rbp]
00110 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
; 23 : target->colum[2] = _mm_shuffle_ps(t1, *defaultVecPtr, _MM_SHUFFLE(2, 0, 2, 0));
00114 48 8b 05 00 00
00 00 mov rax, QWORD PTR defaultVecPtr
0011b 0f 28 45 40 movaps xmm0, XMMWORD PTR t1$[rbp]
0011f 0f c6 00 88 shufps xmm0, XMMWORD PTR [rax], 136 ; 00000088H
00123 b8 10 00 00 00 mov eax, 16
00128 48 6b c0 02 imul rax, rax, 2
0012c 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR target$[rbp]
00133 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
; 24 : target->colum[3] = _mm_shuffle_ps(t1, *defaultVecPtr, _MM_SHUFFLE(3, 1, 3, 1));
00137 48 8b 05 00 00
00 00 mov rax, QWORD PTR defaultVecPtr
0013e 0f 28 45 40 movaps xmm0, XMMWORD PTR t1$[rbp]
00142 0f c6 00 dd shufps xmm0, XMMWORD PTR [rax], 221 ; 000000ddH
00146 b8 10 00 00 00 mov eax, 16
0014b 48 6b c0 03 imul rax, rax, 3
0014f 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR target$[rbp]
00156 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
; 25 : }
0015a 48 8d a5 28 01
00 00 lea rsp, QWORD PTR [rbp+296]
00161 5f pop rdi
00162 5d pop rbp
00163 c3 ret 0
transpose2to4 ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpGraphic\code\mat2.c
; COMDAT transpose2to3
_TEXT SEGMENT
t0$ = 16
t1$ = 64
source$ = 320
target$ = 328
transpose2to3 PROC ; COMDAT
; 7 : {
$LN3:
00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000a 55 push rbp
0000b 57 push rdi
0000c 48 81 ec 48 01
00 00 sub rsp, 328 ; 00000148H
00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00018 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__95997DE0_mat2@c
0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
; 8 : __m128 t0 = _mm_shuffle_ps(ALIGN(source->m[0][0]), ALIGN(source->m[0][1]), _MM_SHUFFLE(1, 0, 1, 0));
00024 b8 08 00 00 00 mov eax, 8
00029 48 6b c0 00 imul rax, rax, 0
0002d 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR source$[rbp]
00034 48 03 c8 add rcx, rax
00037 48 8b c1 mov rax, rcx
0003a b9 04 00 00 00 mov ecx, 4
0003f 48 6b c9 01 imul rcx, rcx, 1
00043 48 03 c1 add rax, rcx
00046 0f 10 00 movups xmm0, XMMWORD PTR [rax]
00049 b8 08 00 00 00 mov eax, 8
0004e 48 6b c0 00 imul rax, rax, 0
00052 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR source$[rbp]
00059 48 03 c8 add rcx, rax
0005c 48 8b c1 mov rax, rcx
0005f b9 04 00 00 00 mov ecx, 4
00064 48 6b c9 00 imul rcx, rcx, 0
00068 48 03 c1 add rax, rcx
0006b 0f 10 08 movups xmm1, XMMWORD PTR [rax]
0006e 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H
00072 0f 28 c1 movaps xmm0, xmm1
00075 0f 29 45 10 movaps XMMWORD PTR t0$[rbp], xmm0
; 9 : __m128 t1 = _mm_shuffle_ps(ALIGN(source->m[0][0]), ALIGN(source->m[0][1]), _MM_SHUFFLE(3, 2, 3, 2));
00079 b8 08 00 00 00 mov eax, 8
0007e 48 6b c0 00 imul rax, rax, 0
00082 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR source$[rbp]
00089 48 03 c8 add rcx, rax
0008c 48 8b c1 mov rax, rcx
0008f b9 04 00 00 00 mov ecx, 4
00094 48 6b c9 01 imul rcx, rcx, 1
00098 48 03 c1 add rax, rcx
0009b 0f 10 00 movups xmm0, XMMWORD PTR [rax]
0009e b8 08 00 00 00 mov eax, 8
000a3 48 6b c0 00 imul rax, rax, 0
000a7 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR source$[rbp]
000ae 48 03 c8 add rcx, rax
000b1 48 8b c1 mov rax, rcx
000b4 b9 04 00 00 00 mov ecx, 4
000b9 48 6b c9 00 imul rcx, rcx, 0
000bd 48 03 c1 add rax, rcx
000c0 0f 10 08 movups xmm1, XMMWORD PTR [rax]
000c3 0f c6 c8 ee shufps xmm1, xmm0, 238 ; 000000eeH
000c7 0f 28 c1 movaps xmm0, xmm1
000ca 0f 29 45 40 movaps XMMWORD PTR t1$[rbp], xmm0
; 10 :
; 11 : target->colum[0] = _mm_shuffle_ps(t0, *defaultVecPtr, _MM_SHUFFLE(2, 0, 2, 0));
000ce 48 8b 05 00 00
00 00 mov rax, QWORD PTR defaultVecPtr
000d5 0f 28 45 10 movaps xmm0, XMMWORD PTR t0$[rbp]
000d9 0f c6 00 88 shufps xmm0, XMMWORD PTR [rax], 136 ; 00000088H
000dd b8 10 00 00 00 mov eax, 16
000e2 48 6b c0 00 imul rax, rax, 0
000e6 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR target$[rbp]
000ed 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
; 12 : target->colum[1] = _mm_shuffle_ps(t0, *defaultVecPtr, _MM_SHUFFLE(3, 1, 3, 1));
000f1 48 8b 05 00 00
00 00 mov rax, QWORD PTR defaultVecPtr
000f8 0f 28 45 10 movaps xmm0, XMMWORD PTR t0$[rbp]
000fc 0f c6 00 dd shufps xmm0, XMMWORD PTR [rax], 221 ; 000000ddH
00100 b8 10 00 00 00 mov eax, 16
00105 48 6b c0 01 imul rax, rax, 1
00109 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR target$[rbp]
00110 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
; 13 : target->colum[2] = _mm_shuffle_ps(t1, *defaultVecPtr, _MM_SHUFFLE(2, 0, 2, 0));
00114 48 8b 05 00 00
00 00 mov rax, QWORD PTR defaultVecPtr
0011b 0f 28 45 40 movaps xmm0, XMMWORD PTR t1$[rbp]
0011f 0f c6 00 88 shufps xmm0, XMMWORD PTR [rax], 136 ; 00000088H
00123 b8 10 00 00 00 mov eax, 16
00128 48 6b c0 02 imul rax, rax, 2
0012c 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR target$[rbp]
00133 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
; 14 : }
00137 48 8d a5 28 01
00 00 lea rsp, QWORD PTR [rbp+296]
0013e 5f pop rdi
0013f 5d pop rbp
00140 c3 ret 0
transpose2to3 ENDP
_TEXT ENDS
END
Binary file not shown.
@@ -1,153 +0,0 @@
{
"Version": "1.2",
"Data": {
"Source": "d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\code\\mat3.c",
"ProvidedModule": "",
"Includes": [
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\stgsharpgraphic.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\framework.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\windows.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\winapifamily.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\winpackagefamily.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\sdkddkver.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\excpt.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\vcruntime.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\sal.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\concurrencysal.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\vadefs.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\stdarg.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\windef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\minwindef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\specstrings.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\specstrings_strict.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\specstrings_undef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\driverspecs.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\sdv_driverspecs.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winnt.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\ctype.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_wctype.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\kernelspecs.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\basetsd.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\guiddef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\string.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_memory.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_memcpy_s.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\errno.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\vcruntime_string.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_wstring.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack8.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\apiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\ktmtypes.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winbase.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\apisetcconv.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\minwinbase.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\apiquery2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\processenv.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\fileapifromapp.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\fileapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\debugapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\utilapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\handleapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\errhandlingapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\fibersapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\namedpipeapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\profileapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\heapapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\ioapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\synchapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\interlockedapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\processthreadsapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\sysinfoapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\memoryapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\enclaveapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\threadpoollegacyapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\threadpoolapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\jobapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\jobapi2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wow64apiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\libloaderapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\securitybaseapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\namespaceapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\systemtopologyapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\processtopologyapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\securityappcontainer.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\realtimeapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\winerror.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\timezoneapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wingdi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winuser.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\tvout.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winnls.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\datetimeapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\stringapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winnls.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wincon.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wincontypes.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\consoleapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\consoleapi2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\consoleapi3.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winver.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\verrsrc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winreg.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\reason.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winnetwk.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\wnnc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\stralign.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winsvc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\mcx.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\imm.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\ime_cmodes.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\glad\\gl.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\khr\\khrplatform.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\stdint.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\glad\\wgl.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\glfw\\glfw3.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\stddef.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\immintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\wmmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\nmmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\smmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\tmmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\pmmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\emmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\xmmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\mmintrin.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\malloc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_malloc.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\zmmintrin.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\stdio.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_stdio_config.h"
]
}
}
@@ -1,884 +0,0 @@
; Listing generated by Microsoft (R) Optimizing Compiler Version 19.37.32824.0
include listing.inc
INCLUDELIB MSVCRTD
INCLUDELIB OLDNAMES
_DATA SEGMENT
COMM infolog:QWORD:0200H
_DATA ENDS
msvcjmc SEGMENT
__0ED14FEE_winpackagefamily@h DB 01H
__F92EF742_winapifamily@h DB 01H
__22E515EB_sdkddkver@h DB 01H
__9C03CD75_concurrencysal@h DB 01H
__CA64BAF1_sal@h DB 01H
__95655E73_vadefs@h DB 01H
__1D560A45_vcruntime@h DB 01H
__F214EFBF_excpt@h DB 01H
__D9B78EDA_stdarg@h DB 01H
__29F49F40_specstrings_undef@h DB 01H
__D0F42932_specstrings_strict@h DB 01H
__F00405FD_sdv_driverspecs@h DB 01H
__173E09CA_driverspecs@h DB 01H
__9A452361_specstrings@h DB 01H
__1B0272D9_corecrt@h DB 01H
__74484FB3_corecrt_wctype@h DB 01H
__1EC467ED_ctype@h DB 01H
__98517906_kernelspecs@h DB 01H
__D3497022_basetsd@h DB 01H
__61CC25A1_errno@h DB 01H
__7061C667_vcruntime_string@h DB 01H
__E4C945B4_corecrt_memcpy_s@h DB 01H
__8EAFF484_corecrt_memory@h DB 01H
__6490AEC5_corecrt_wstring@h DB 01H
__E8295E1E_string@h DB 01H
__7FCB5136_guiddef@h DB 01H
__FF8A9E11_pshpack4@h DB 01H
__D5438902_poppack@h DB 01H
__FB07E2A3_pshpack2@h DB 01H
__F6906775_pshpack8@h DB 01H
__F9415CFA_pshpack1@h DB 01H
__E58C6F1C_apiset@h DB 01H
__A5C52262_ktmtypes@h DB 01H
__FBBA8F9D_winnt@h DB 01H
__A32D3D2C_minwindef@h DB 01H
__7D798299_windef@h DB 01H
__9AE108E9_apisetcconv@h DB 01H
__9CE53D2C_minwinbase@h DB 01H
__5D0AA210_apiquery2@h DB 01H
__4DD4E726_processenv@h DB 01H
__3575CC96_fileapi@h DB 01H
__8EA220E6_fileapifromapp@h DB 01H
__BF9B31FE_debugapi@h DB 01H
__C3AFE134_utilapiset@h DB 01H
__76F69E51_handleapi@h DB 01H
__7E63D784_errhandlingapi@h DB 01H
__FFA7003C_fibersapi@h DB 01H
__8971CECF_namedpipeapi@h DB 01H
__46C9D8A6_profileapi@h DB 01H
__98D4F0A3_heapapi@h DB 01H
__50EF2A88_ioapiset@h DB 01H
__92EA1464_synchapi@h DB 01H
__A53D8AED_interlockedapi@h DB 01H
__B506CAAF_processthreadsapi@h DB 01H
__FF735694_sysinfoapi@h DB 01H
__29589789_memoryapi@h DB 01H
__E9C7A663_enclaveapi@h DB 01H
__D035F9F7_threadpoollegacyapiset@h DB 01H
__C899130C_threadpoolapiset@h DB 01H
__E0441EE7_jobapi@h DB 01H
__CEF86838_jobapi2@h DB 01H
__35AC6B9A_wow64apiset@h DB 01H
__C8AE41A5_libloaderapi@h DB 01H
__CC9E232D_securitybaseapi@h DB 01H
__C9D0C9B8_namespaceapi@h DB 01H
__30FF9CAD_systemtopologyapi@h DB 01H
__4D358795_processtopologyapi@h DB 01H
__40446D10_securityappcontainer@h DB 01H
__3A952EDF_realtimeapiset@h DB 01H
__F4865F4B_winerror@h DB 01H
__53C1BD93_timezoneapi@h DB 01H
__1FFBEDBF_winbase@h DB 01H
__43D3FA34_wingdi@h DB 01H
__D24A7391_tvout@h DB 01H
__7713A6C8_winuser@h DB 01H
__0B345F71_datetimeapi@h DB 01H
__9AC6960C_winnls@h DB 01H
__973A40A8_stringapiset@h DB 01H
__CC46FEE2_wincontypes@h DB 01H
__97D70BE1_consoleapi@h DB 01H
__27EC5E18_consoleapi2@h DB 01H
__262E342F_consoleapi3@h DB 01H
__641DCD70_wincon@h DB 01H
__5A96C7A7_verrsrc@h DB 01H
__B69C6FF2_winver@h DB 01H
__7AEB8C37_reason@h DB 01H
__59F1A8A9_winreg@h DB 01H
__EE0E2B7F_wnnc@h DB 01H
__DCDB7054_winnetwk@h DB 01H
__81DDEDE3_stralign@h DB 01H
__2134D1B4_winsvc@h DB 01H
__11C07376_mcx@h DB 01H
__577CE3E7_ime_cmodes@h DB 01H
__1E72C31E_imm@h DB 01H
__E15BF856_windows@h DB 01H
__DB6DF2FB_framework@h DB 01H
__ED683015_stdint@h DB 01H
__0A43AFA2_khrplatform@h DB 01H
__76346090_gl@h DB 01H
__2AAB3559_wgl@h DB 01H
__13F5961F_stddef@h DB 01H
__937078CB_glfw3@h DB 01H
__11E77DD3_mmintrin@h DB 01H
__45DED006_corecrt_malloc@h DB 01H
__FA77ED4C_malloc@h DB 01H
__9D836611_xmmintrin@h DB 01H
__F8E1EFDD_emmintrin@h DB 01H
__27408754_pmmintrin@h DB 01H
__9799F4D6_tmmintrin@h DB 01H
__BEA2E155_smmintrin@h DB 01H
__DBC06899_nmmintrin@h DB 01H
__0E7B92D7_wmmintrin@h DB 01H
__C5EFDFD0_zmmintrin@h DB 01H
__F2FB7D1A_immintrin@h DB 01H
__09B04B44_StgSharpGraphic@h DB 01H
__44420885_corecrt_stdio_config@h DB 01H
__AB601D8D_corecrt_wstdio@h DB 01H
__C1EC35D3_stdio@h DB 01H
__945B17D7_mat3@c DB 01H
msvcjmc ENDS
PUBLIC transpose3to2
PUBLIC transpose3to3
PUBLIC transpose3to4
PUBLIC det_mat3
PUBLIC det_mat3_internal
PUBLIC __JustMyCode_Default
EXTRN _RTC_CheckStackVars:PROC
EXTRN _RTC_InitBase:PROC
EXTRN _RTC_Shutdown:PROC
EXTRN __CheckForDebuggerJustMyCode:PROC
EXTRN defaultVecPtr:QWORD
EXTRN _fltused:DWORD
; COMDAT pdata
pdata SEGMENT
$pdata$transpose3to2 DD imagerel $LN3
DD imagerel $LN3+238
DD imagerel $unwind$transpose3to2
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$transpose3to3 DD imagerel $LN3
DD imagerel $LN3+407
DD imagerel $unwind$transpose3to3
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$transpose3to4 DD imagerel $LN3
DD imagerel $LN3+439
DD imagerel $unwind$transpose3to4
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$det_mat3 DD imagerel $LN3
DD imagerel $LN3+148
DD imagerel $unwind$det_mat3
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$det_mat3_internal DD imagerel $LN3
DD imagerel $LN3+370
DD imagerel $unwind$det_mat3_internal
pdata ENDS
; COMDAT rtc$TMZ
rtc$TMZ SEGMENT
_RTC_Shutdown.rtc$TMZ DQ FLAT:_RTC_Shutdown
rtc$TMZ ENDS
; COMDAT rtc$IMZ
rtc$IMZ SEGMENT
_RTC_InitBase.rtc$IMZ DQ FLAT:_RTC_InitBase
rtc$IMZ ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$det_mat3_internal DD 035053601H
DD 0118331dH
DD 070110049H
DD 05010H
xdata ENDS
; COMDAT CONST
CONST SEGMENT
det_mat3_internal$rtcName$0 DB 072H
DB 065H
DB 074H
DB 00H
ORG $+12
det_mat3_internal$rtcVarDesc DD 0160H
DD 010H
DQ FLAT:det_mat3_internal$rtcName$0
ORG $+48
det_mat3_internal$rtcFrameData DD 01H
DD 00H
DQ FLAT:det_mat3_internal$rtcVarDesc
CONST ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$det_mat3 DD 035051301H
DD 010e3313H
DD 070070031H
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$transpose3to4 DD 025051801H
DD 01132318H
DD 0700c0035H
DD 0500bH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$transpose3to3 DD 025051801H
DD 01132318H
DD 0700c0035H
DD 0500bH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$transpose3to2 DD 025051801H
DD 01132318H
DD 0700c0029H
DD 0500bH
xdata ENDS
; Function compile flags: /Odt
; COMDAT __JustMyCode_Default
_TEXT SEGMENT
__JustMyCode_Default PROC ; COMDAT
00000 c2 00 00 ret 0
__JustMyCode_Default ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpGraphic\code\mat3.c
; COMDAT det_mat3_internal
_TEXT SEGMENT
addc1$ = 16
addc2$ = 64
subc1$ = 112
subc2$ = 160
cache$ = 208
sub$ = 256
ret$ = 304
c0$ = 560
c1$ = 568
c2$ = 576
det_mat3_internal PROC ; COMDAT
; 42 : {
$LN3:
00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000f 55 push rbp
00010 57 push rdi
00011 48 81 ec 48 02
00 00 sub rsp, 584 ; 00000248H
00018 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
0001d 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
00022 b9 56 00 00 00 mov ecx, 86 ; 00000056H
00027 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
0002c f3 ab rep stosd
0002e 48 8b 8c 24 68
02 00 00 mov rcx, QWORD PTR [rsp+616]
00036 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__945B17D7_mat3@c
0003d e8 00 00 00 00 call __CheckForDebuggerJustMyCode
; 43 :
; 44 : //let adding row aligned
; 45 : __m128 addc1 = _mm_shuffle_ps(c1, c1, _MM_SHUFFLE(3, 0, 2, 1));
00042 48 8b 85 38 02
00 00 mov rax, QWORD PTR c1$[rbp]
00049 48 8b 8d 38 02
00 00 mov rcx, QWORD PTR c1$[rbp]
00050 0f 10 00 movups xmm0, XMMWORD PTR [rax]
00053 0f c6 01 c9 shufps xmm0, XMMWORD PTR [rcx], 201 ; 000000c9H
00057 0f 29 45 10 movaps XMMWORD PTR addc1$[rbp], xmm0
; 46 : __m128 addc2 = _mm_shuffle_ps(c2, c2, _MM_SHUFFLE(3, 1, 0, 2));
0005b 48 8b 85 40 02
00 00 mov rax, QWORD PTR c2$[rbp]
00062 48 8b 8d 40 02
00 00 mov rcx, QWORD PTR c2$[rbp]
00069 0f 10 00 movups xmm0, XMMWORD PTR [rax]
0006c 0f c6 01 d2 shufps xmm0, XMMWORD PTR [rcx], 210 ; 000000d2H
00070 0f 29 45 40 movaps XMMWORD PTR addc2$[rbp], xmm0
; 47 :
; 48 : //let sub row aligned
; 49 : __m128 subc1 = _mm_shuffle_ps(c1, c1, _MM_SHUFFLE(3, 1, 0, 2));
00074 48 8b 85 38 02
00 00 mov rax, QWORD PTR c1$[rbp]
0007b 48 8b 8d 38 02
00 00 mov rcx, QWORD PTR c1$[rbp]
00082 0f 10 00 movups xmm0, XMMWORD PTR [rax]
00085 0f c6 01 d2 shufps xmm0, XMMWORD PTR [rcx], 210 ; 000000d2H
00089 0f 29 45 70 movaps XMMWORD PTR subc1$[rbp], xmm0
; 50 : __m128 subc2 = _mm_shuffle_ps(c2, c2, _MM_SHUFFLE(3, 0, 2, 1));
0008d 48 8b 85 40 02
00 00 mov rax, QWORD PTR c2$[rbp]
00094 48 8b 8d 40 02
00 00 mov rcx, QWORD PTR c2$[rbp]
0009b 0f 10 00 movups xmm0, XMMWORD PTR [rax]
0009e 0f c6 01 c9 shufps xmm0, XMMWORD PTR [rcx], 201 ; 000000c9H
000a2 0f 29 85 a0 00
00 00 movaps XMMWORD PTR subc2$[rbp], xmm0
; 51 :
; 52 : //multple all add row
; 53 : __m128 cache = _mm_mul_ps(c0, addc1);
000a9 48 8b 85 30 02
00 00 mov rax, QWORD PTR c0$[rbp]
000b0 0f 10 00 movups xmm0, XMMWORD PTR [rax]
000b3 0f 59 45 10 mulps xmm0, XMMWORD PTR addc1$[rbp]
000b7 0f 29 85 d0 00
00 00 movaps XMMWORD PTR cache$[rbp], xmm0
; 54 : cache = _mm_mul_ps(cache, addc2);
000be 0f 28 85 d0 00
00 00 movaps xmm0, XMMWORD PTR cache$[rbp]
000c5 0f 59 45 40 mulps xmm0, XMMWORD PTR addc2$[rbp]
000c9 0f 29 85 d0 00
00 00 movaps XMMWORD PTR cache$[rbp], xmm0
; 55 :
; 56 : //multiple all sub row
; 57 : __m128 sub = _mm_mul_ps(c0, subc1);
000d0 48 8b 85 30 02
00 00 mov rax, QWORD PTR c0$[rbp]
000d7 0f 10 00 movups xmm0, XMMWORD PTR [rax]
000da 0f 59 45 70 mulps xmm0, XMMWORD PTR subc1$[rbp]
000de 0f 29 85 00 01
00 00 movaps XMMWORD PTR sub$[rbp], xmm0
; 58 : sub = _mm_mul_ps(sub, subc2);
000e5 0f 28 85 00 01
00 00 movaps xmm0, XMMWORD PTR sub$[rbp]
000ec 0f 59 85 a0 00
00 00 mulps xmm0, XMMWORD PTR subc2$[rbp]
000f3 0f 29 85 00 01
00 00 movaps XMMWORD PTR sub$[rbp], xmm0
; 59 :
; 60 : //main-corner sub sub-corner
; 61 : cache = _mm_sub_ps(cache, sub);
000fa 0f 28 85 d0 00
00 00 movaps xmm0, XMMWORD PTR cache$[rbp]
00101 0f 5c 85 00 01
00 00 subps xmm0, XMMWORD PTR sub$[rbp]
00108 0f 29 85 d0 00
00 00 movaps XMMWORD PTR cache$[rbp], xmm0
; 62 :
; 63 : __m128 ret = _mm_hadd_ps(cache, cache); //element 1 add element 2
0010f 0f 28 85 d0 00
00 00 movaps xmm0, XMMWORD PTR cache$[rbp]
00116 f2 0f 7c 85 d0
00 00 00 haddps xmm0, XMMWORD PTR cache$[rbp]
0011e 0f 29 85 30 01
00 00 movaps XMMWORD PTR ret$[rbp], xmm0
; 64 : ret = _mm_add_ps(ret, cache); //(e1 add e2) add element 3
00125 0f 28 85 30 01
00 00 movaps xmm0, XMMWORD PTR ret$[rbp]
0012c 0f 58 85 d0 00
00 00 addps xmm0, XMMWORD PTR cache$[rbp]
00133 0f 29 85 30 01
00 00 movaps XMMWORD PTR ret$[rbp], xmm0
; 65 :
; 66 :
; 67 : return ret.m128_f32[2];
0013a b8 04 00 00 00 mov eax, 4
0013f 48 6b c0 02 imul rax, rax, 2
00143 f3 0f 10 84 05
30 01 00 00 movss xmm0, DWORD PTR ret$[rbp+rax]
; 68 : }
0014c f3 0f 7f 44 24
20 movdqu XMMWORD PTR [rsp+32], xmm0
00152 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
00156 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:det_mat3_internal$rtcFrameData
0015d e8 00 00 00 00 call _RTC_CheckStackVars
00162 f3 0f 6f 44 24
20 movdqu xmm0, XMMWORD PTR [rsp+32]
00168 48 8d a5 18 02
00 00 lea rsp, QWORD PTR [rbp+536]
0016f 5f pop rdi
00170 5d pop rbp
00171 c3 ret 0
det_mat3_internal ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpGraphic\code\mat3.c
; COMDAT det_mat3
_TEXT SEGMENT
$T1 = 208
$T2 = 256
$T3 = 304
mat$ = 368
det_mat3 PROC ; COMDAT
; 71 : {
$LN3:
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec 88 01
00 00 sub rsp, 392 ; 00000188H
0000e 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__945B17D7_mat3@c
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
; 72 : return det_mat3_internal(
0001f b8 10 00 00 00 mov eax, 16
00024 48 6b c0 02 imul rax, rax, 2
00028 48 8b 8d 70 01
00 00 mov rcx, QWORD PTR mat$[rbp]
0002f 0f 10 04 01 movups xmm0, XMMWORD PTR [rcx+rax]
00033 0f 11 85 30 01
00 00 movups XMMWORD PTR $T3[rbp], xmm0
0003a b8 10 00 00 00 mov eax, 16
0003f 48 6b c0 01 imul rax, rax, 1
00043 48 8b 8d 70 01
00 00 mov rcx, QWORD PTR mat$[rbp]
0004a 0f 10 04 01 movups xmm0, XMMWORD PTR [rcx+rax]
0004e 0f 11 85 00 01
00 00 movups XMMWORD PTR $T2[rbp], xmm0
00055 b8 10 00 00 00 mov eax, 16
0005a 48 6b c0 00 imul rax, rax, 0
0005e 48 8b 8d 70 01
00 00 mov rcx, QWORD PTR mat$[rbp]
00065 0f 10 04 01 movups xmm0, XMMWORD PTR [rcx+rax]
00069 0f 11 85 d0 00
00 00 movups XMMWORD PTR $T1[rbp], xmm0
00070 4c 8d 85 30 01
00 00 lea r8, QWORD PTR $T3[rbp]
00077 48 8d 95 00 01
00 00 lea rdx, QWORD PTR $T2[rbp]
0007e 48 8d 8d d0 00
00 00 lea rcx, QWORD PTR $T1[rbp]
00085 e8 00 00 00 00 call det_mat3_internal
; 73 : mat->colum[0],
; 74 : mat->colum[1],
; 75 : mat->colum[2]
; 76 : );
; 77 : }
0008a 48 8d a5 58 01
00 00 lea rsp, QWORD PTR [rbp+344]
00091 5f pop rdi
00092 5d pop rbp
00093 c3 ret 0
det_mat3 ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpGraphic\code\mat3.c
; COMDAT transpose3to4
_TEXT SEGMENT
t0$ = 16
t1$ = 64
t2$ = 112
t3$ = 160
source$ = 416
target$ = 424
transpose3to4 PROC ; COMDAT
; 29 : {
$LN3:
00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000a 55 push rbp
0000b 57 push rdi
0000c 48 81 ec a8 01
00 00 sub rsp, 424 ; 000001a8H
00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00018 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__945B17D7_mat3@c
0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
; 30 : __m128 t0 = _mm_shuffle_ps(ALIGN(source->m[0][0]), ALIGN(source->m[0][1]), _MM_SHUFFLE(1, 0, 1, 0));
00024 b8 0c 00 00 00 mov eax, 12
00029 48 6b c0 00 imul rax, rax, 0
0002d 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR source$[rbp]
00034 48 8d 44 01 30 lea rax, QWORD PTR [rcx+rax+48]
00039 b9 04 00 00 00 mov ecx, 4
0003e 48 6b c9 01 imul rcx, rcx, 1
00042 48 03 c1 add rax, rcx
00045 0f 10 00 movups xmm0, XMMWORD PTR [rax]
00048 b8 0c 00 00 00 mov eax, 12
0004d 48 6b c0 00 imul rax, rax, 0
00051 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR source$[rbp]
00058 48 8d 44 01 30 lea rax, QWORD PTR [rcx+rax+48]
0005d b9 04 00 00 00 mov ecx, 4
00062 48 6b c9 00 imul rcx, rcx, 0
00066 48 03 c1 add rax, rcx
00069 0f 10 08 movups xmm1, XMMWORD PTR [rax]
0006c 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H
00070 0f 28 c1 movaps xmm0, xmm1
00073 0f 29 45 10 movaps XMMWORD PTR t0$[rbp], xmm0
; 31 : __m128 t1 = _mm_shuffle_ps(ALIGN(source->m[0][0]), ALIGN(source->m[0][1]), _MM_SHUFFLE(3, 2, 3, 2));
00077 b8 0c 00 00 00 mov eax, 12
0007c 48 6b c0 00 imul rax, rax, 0
00080 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR source$[rbp]
00087 48 8d 44 01 30 lea rax, QWORD PTR [rcx+rax+48]
0008c b9 04 00 00 00 mov ecx, 4
00091 48 6b c9 01 imul rcx, rcx, 1
00095 48 03 c1 add rax, rcx
00098 0f 10 00 movups xmm0, XMMWORD PTR [rax]
0009b b8 0c 00 00 00 mov eax, 12
000a0 48 6b c0 00 imul rax, rax, 0
000a4 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR source$[rbp]
000ab 48 8d 44 01 30 lea rax, QWORD PTR [rcx+rax+48]
000b0 b9 04 00 00 00 mov ecx, 4
000b5 48 6b c9 00 imul rcx, rcx, 0
000b9 48 03 c1 add rax, rcx
000bc 0f 10 08 movups xmm1, XMMWORD PTR [rax]
000bf 0f c6 c8 ee shufps xmm1, xmm0, 238 ; 000000eeH
000c3 0f 28 c1 movaps xmm0, xmm1
000c6 0f 29 45 40 movaps XMMWORD PTR t1$[rbp], xmm0
; 32 : __m128 t2 = _mm_shuffle_ps(ALIGN(source->m[0][2]), *defaultVecPtr, _MM_SHUFFLE(1, 0, 1, 0));
000ca b8 0c 00 00 00 mov eax, 12
000cf 48 6b c0 00 imul rax, rax, 0
000d3 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR source$[rbp]
000da 48 8d 44 01 30 lea rax, QWORD PTR [rcx+rax+48]
000df b9 04 00 00 00 mov ecx, 4
000e4 48 6b c9 02 imul rcx, rcx, 2
000e8 48 03 c1 add rax, rcx
000eb 0f 10 00 movups xmm0, XMMWORD PTR [rax]
000ee 48 8b 05 00 00
00 00 mov rax, QWORD PTR defaultVecPtr
000f5 0f c6 00 44 shufps xmm0, XMMWORD PTR [rax], 68 ; 00000044H
000f9 0f 29 45 70 movaps XMMWORD PTR t2$[rbp], xmm0
; 33 : __m128 t3 = _mm_shuffle_ps(ALIGN(source->m[0][2]), *defaultVecPtr, _MM_SHUFFLE(3, 2, 3, 2));
000fd b8 0c 00 00 00 mov eax, 12
00102 48 6b c0 00 imul rax, rax, 0
00106 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR source$[rbp]
0010d 48 8d 44 01 30 lea rax, QWORD PTR [rcx+rax+48]
00112 b9 04 00 00 00 mov ecx, 4
00117 48 6b c9 02 imul rcx, rcx, 2
0011b 48 03 c1 add rax, rcx
0011e 0f 10 00 movups xmm0, XMMWORD PTR [rax]
00121 48 8b 05 00 00
00 00 mov rax, QWORD PTR defaultVecPtr
00128 0f c6 00 ee shufps xmm0, XMMWORD PTR [rax], 238 ; 000000eeH
0012c 0f 29 85 a0 00
00 00 movaps XMMWORD PTR t3$[rbp], xmm0
; 34 :
; 35 : target->colum[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0));
00133 0f 28 45 10 movaps xmm0, XMMWORD PTR t0$[rbp]
00137 0f c6 45 70 88 shufps xmm0, XMMWORD PTR t2$[rbp], 136 ; 00000088H
0013c b8 10 00 00 00 mov eax, 16
00141 48 6b c0 00 imul rax, rax, 0
00145 48 8b 8d a8 01
00 00 mov rcx, QWORD PTR target$[rbp]
0014c 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
; 36 : target->colum[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1));
00150 0f 28 45 10 movaps xmm0, XMMWORD PTR t0$[rbp]
00154 0f c6 45 70 dd shufps xmm0, XMMWORD PTR t2$[rbp], 221 ; 000000ddH
00159 b8 10 00 00 00 mov eax, 16
0015e 48 6b c0 01 imul rax, rax, 1
00162 48 8b 8d a8 01
00 00 mov rcx, QWORD PTR target$[rbp]
00169 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
; 37 : target->colum[2] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(2, 0, 2, 0));
0016d 0f 28 45 40 movaps xmm0, XMMWORD PTR t1$[rbp]
00171 0f c6 85 a0 00
00 00 88 shufps xmm0, XMMWORD PTR t3$[rbp], 136 ; 00000088H
00179 b8 10 00 00 00 mov eax, 16
0017e 48 6b c0 02 imul rax, rax, 2
00182 48 8b 8d a8 01
00 00 mov rcx, QWORD PTR target$[rbp]
00189 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
; 38 : target->colum[3] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(3, 1, 3, 1));
0018d 0f 28 45 40 movaps xmm0, XMMWORD PTR t1$[rbp]
00191 0f c6 85 a0 00
00 00 dd shufps xmm0, XMMWORD PTR t3$[rbp], 221 ; 000000ddH
00199 b8 10 00 00 00 mov eax, 16
0019e 48 6b c0 03 imul rax, rax, 3
001a2 48 8b 8d a8 01
00 00 mov rcx, QWORD PTR target$[rbp]
001a9 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
; 39 : }
001ad 48 8d a5 88 01
00 00 lea rsp, QWORD PTR [rbp+392]
001b4 5f pop rdi
001b5 5d pop rbp
001b6 c3 ret 0
transpose3to4 ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpGraphic\code\mat3.c
; COMDAT transpose3to3
_TEXT SEGMENT
t0$ = 16
t1$ = 64
t2$ = 112
t3$ = 160
source$ = 416
target$ = 424
transpose3to3 PROC ; COMDAT
; 16 : {
$LN3:
00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000a 55 push rbp
0000b 57 push rdi
0000c 48 81 ec a8 01
00 00 sub rsp, 424 ; 000001a8H
00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00018 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__945B17D7_mat3@c
0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
; 17 : __m128 t0 = _mm_shuffle_ps(ALIGN(source->m[0][0]), ALIGN(source->m[0][1]), _MM_SHUFFLE(1, 0, 1, 0));
00024 b8 0c 00 00 00 mov eax, 12
00029 48 6b c0 00 imul rax, rax, 0
0002d 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR source$[rbp]
00034 48 8d 44 01 30 lea rax, QWORD PTR [rcx+rax+48]
00039 b9 04 00 00 00 mov ecx, 4
0003e 48 6b c9 01 imul rcx, rcx, 1
00042 48 03 c1 add rax, rcx
00045 0f 10 00 movups xmm0, XMMWORD PTR [rax]
00048 b8 0c 00 00 00 mov eax, 12
0004d 48 6b c0 00 imul rax, rax, 0
00051 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR source$[rbp]
00058 48 8d 44 01 30 lea rax, QWORD PTR [rcx+rax+48]
0005d b9 04 00 00 00 mov ecx, 4
00062 48 6b c9 00 imul rcx, rcx, 0
00066 48 03 c1 add rax, rcx
00069 0f 10 08 movups xmm1, XMMWORD PTR [rax]
0006c 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H
00070 0f 28 c1 movaps xmm0, xmm1
00073 0f 29 45 10 movaps XMMWORD PTR t0$[rbp], xmm0
; 18 : __m128 t1 = _mm_shuffle_ps(ALIGN(source->m[0][0]), ALIGN(source->m[0][1]), _MM_SHUFFLE(3, 2, 3, 2));
00077 b8 0c 00 00 00 mov eax, 12
0007c 48 6b c0 00 imul rax, rax, 0
00080 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR source$[rbp]
00087 48 8d 44 01 30 lea rax, QWORD PTR [rcx+rax+48]
0008c b9 04 00 00 00 mov ecx, 4
00091 48 6b c9 01 imul rcx, rcx, 1
00095 48 03 c1 add rax, rcx
00098 0f 10 00 movups xmm0, XMMWORD PTR [rax]
0009b b8 0c 00 00 00 mov eax, 12
000a0 48 6b c0 00 imul rax, rax, 0
000a4 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR source$[rbp]
000ab 48 8d 44 01 30 lea rax, QWORD PTR [rcx+rax+48]
000b0 b9 04 00 00 00 mov ecx, 4
000b5 48 6b c9 00 imul rcx, rcx, 0
000b9 48 03 c1 add rax, rcx
000bc 0f 10 08 movups xmm1, XMMWORD PTR [rax]
000bf 0f c6 c8 ee shufps xmm1, xmm0, 238 ; 000000eeH
000c3 0f 28 c1 movaps xmm0, xmm1
000c6 0f 29 45 40 movaps XMMWORD PTR t1$[rbp], xmm0
; 19 : __m128 t2 = _mm_shuffle_ps(ALIGN(source->m[0][2]), *defaultVecPtr, _MM_SHUFFLE(1, 0, 1, 0));
000ca b8 0c 00 00 00 mov eax, 12
000cf 48 6b c0 00 imul rax, rax, 0
000d3 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR source$[rbp]
000da 48 8d 44 01 30 lea rax, QWORD PTR [rcx+rax+48]
000df b9 04 00 00 00 mov ecx, 4
000e4 48 6b c9 02 imul rcx, rcx, 2
000e8 48 03 c1 add rax, rcx
000eb 0f 10 00 movups xmm0, XMMWORD PTR [rax]
000ee 48 8b 05 00 00
00 00 mov rax, QWORD PTR defaultVecPtr
000f5 0f c6 00 44 shufps xmm0, XMMWORD PTR [rax], 68 ; 00000044H
000f9 0f 29 45 70 movaps XMMWORD PTR t2$[rbp], xmm0
; 20 : __m128 t3 = _mm_shuffle_ps(ALIGN(source->m[0][2]), *defaultVecPtr, _MM_SHUFFLE(3, 2, 3, 2));
000fd b8 0c 00 00 00 mov eax, 12
00102 48 6b c0 00 imul rax, rax, 0
00106 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR source$[rbp]
0010d 48 8d 44 01 30 lea rax, QWORD PTR [rcx+rax+48]
00112 b9 04 00 00 00 mov ecx, 4
00117 48 6b c9 02 imul rcx, rcx, 2
0011b 48 03 c1 add rax, rcx
0011e 0f 10 00 movups xmm0, XMMWORD PTR [rax]
00121 48 8b 05 00 00
00 00 mov rax, QWORD PTR defaultVecPtr
00128 0f c6 00 ee shufps xmm0, XMMWORD PTR [rax], 238 ; 000000eeH
0012c 0f 29 85 a0 00
00 00 movaps XMMWORD PTR t3$[rbp], xmm0
; 21 :
; 22 : target->colum[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0));
00133 0f 28 45 10 movaps xmm0, XMMWORD PTR t0$[rbp]
00137 0f c6 45 70 88 shufps xmm0, XMMWORD PTR t2$[rbp], 136 ; 00000088H
0013c b8 10 00 00 00 mov eax, 16
00141 48 6b c0 00 imul rax, rax, 0
00145 48 8b 8d a8 01
00 00 mov rcx, QWORD PTR target$[rbp]
0014c 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
; 23 : target->colum[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1));
00150 0f 28 45 10 movaps xmm0, XMMWORD PTR t0$[rbp]
00154 0f c6 45 70 dd shufps xmm0, XMMWORD PTR t2$[rbp], 221 ; 000000ddH
00159 b8 10 00 00 00 mov eax, 16
0015e 48 6b c0 01 imul rax, rax, 1
00162 48 8b 8d a8 01
00 00 mov rcx, QWORD PTR target$[rbp]
00169 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
; 24 : target->colum[2] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(2, 0, 2, 0));
0016d 0f 28 45 40 movaps xmm0, XMMWORD PTR t1$[rbp]
00171 0f c6 85 a0 00
00 00 88 shufps xmm0, XMMWORD PTR t3$[rbp], 136 ; 00000088H
00179 b8 10 00 00 00 mov eax, 16
0017e 48 6b c0 02 imul rax, rax, 2
00182 48 8b 8d a8 01
00 00 mov rcx, QWORD PTR target$[rbp]
00189 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
; 25 : }
0018d 48 8d a5 88 01
00 00 lea rsp, QWORD PTR [rbp+392]
00194 5f pop rdi
00195 5d pop rbp
00196 c3 ret 0
transpose3to3 ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpGraphic\code\mat3.c
; COMDAT transpose3to2
_TEXT SEGMENT
t0$ = 16
t2$ = 64
source$ = 320
target$ = 328
transpose3to2 PROC ; COMDAT
; 7 : {
$LN3:
00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000a 55 push rbp
0000b 57 push rdi
0000c 48 81 ec 48 01
00 00 sub rsp, 328 ; 00000148H
00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00018 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__945B17D7_mat3@c
0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
; 8 : __m128 t0 = _mm_shuffle_ps(ALIGN(source->m[0][0]), ALIGN(source->m[0][1]), _MM_SHUFFLE(1, 0, 1, 0));
00024 b8 0c 00 00 00 mov eax, 12
00029 48 6b c0 00 imul rax, rax, 0
0002d 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR source$[rbp]
00034 48 8d 44 01 30 lea rax, QWORD PTR [rcx+rax+48]
00039 b9 04 00 00 00 mov ecx, 4
0003e 48 6b c9 01 imul rcx, rcx, 1
00042 48 03 c1 add rax, rcx
00045 0f 10 00 movups xmm0, XMMWORD PTR [rax]
00048 b8 0c 00 00 00 mov eax, 12
0004d 48 6b c0 00 imul rax, rax, 0
00051 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR source$[rbp]
00058 48 8d 44 01 30 lea rax, QWORD PTR [rcx+rax+48]
0005d b9 04 00 00 00 mov ecx, 4
00062 48 6b c9 00 imul rcx, rcx, 0
00066 48 03 c1 add rax, rcx
00069 0f 10 08 movups xmm1, XMMWORD PTR [rax]
0006c 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H
00070 0f 28 c1 movaps xmm0, xmm1
00073 0f 29 45 10 movaps XMMWORD PTR t0$[rbp], xmm0
; 9 : __m128 t2 = _mm_shuffle_ps(ALIGN(source->m[0][2]), *defaultVecPtr, _MM_SHUFFLE(1, 0, 1, 0));
00077 b8 0c 00 00 00 mov eax, 12
0007c 48 6b c0 00 imul rax, rax, 0
00080 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR source$[rbp]
00087 48 8d 44 01 30 lea rax, QWORD PTR [rcx+rax+48]
0008c b9 04 00 00 00 mov ecx, 4
00091 48 6b c9 02 imul rcx, rcx, 2
00095 48 03 c1 add rax, rcx
00098 0f 10 00 movups xmm0, XMMWORD PTR [rax]
0009b 48 8b 05 00 00
00 00 mov rax, QWORD PTR defaultVecPtr
000a2 0f c6 00 44 shufps xmm0, XMMWORD PTR [rax], 68 ; 00000044H
000a6 0f 29 45 40 movaps XMMWORD PTR t2$[rbp], xmm0
; 10 :
; 11 : target->colum[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0));
000aa 0f 28 45 10 movaps xmm0, XMMWORD PTR t0$[rbp]
000ae 0f c6 45 40 88 shufps xmm0, XMMWORD PTR t2$[rbp], 136 ; 00000088H
000b3 b8 10 00 00 00 mov eax, 16
000b8 48 6b c0 00 imul rax, rax, 0
000bc 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR target$[rbp]
000c3 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
; 12 : target->colum[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1));
000c7 0f 28 45 10 movaps xmm0, XMMWORD PTR t0$[rbp]
000cb 0f c6 45 40 dd shufps xmm0, XMMWORD PTR t2$[rbp], 221 ; 000000ddH
000d0 b8 10 00 00 00 mov eax, 16
000d5 48 6b c0 01 imul rax, rax, 1
000d9 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR target$[rbp]
000e0 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
; 13 : }
000e4 48 8d a5 28 01
00 00 lea rsp, QWORD PTR [rbp+296]
000eb 5f pop rdi
000ec 5d pop rbp
000ed c3 ret 0
transpose3to2 ENDP
_TEXT ENDS
END
Binary file not shown.
@@ -1,153 +0,0 @@
{
"Version": "1.2",
"Data": {
"Source": "d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\code\\mat4.c",
"ProvidedModule": "",
"Includes": [
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\stgsharpgraphic.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\framework.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\windows.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\winapifamily.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\winpackagefamily.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\sdkddkver.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\excpt.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\vcruntime.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\sal.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\concurrencysal.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\vadefs.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\stdarg.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\windef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\minwindef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\specstrings.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\specstrings_strict.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\specstrings_undef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\driverspecs.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\sdv_driverspecs.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winnt.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\ctype.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_wctype.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\kernelspecs.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\basetsd.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\guiddef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\string.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_memory.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_memcpy_s.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\errno.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\vcruntime_string.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_wstring.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack8.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\apiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\ktmtypes.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winbase.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\apisetcconv.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\minwinbase.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\apiquery2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\processenv.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\fileapifromapp.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\fileapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\debugapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\utilapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\handleapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\errhandlingapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\fibersapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\namedpipeapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\profileapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\heapapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\ioapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\synchapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\interlockedapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\processthreadsapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\sysinfoapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\memoryapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\enclaveapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\threadpoollegacyapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\threadpoolapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\jobapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\jobapi2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wow64apiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\libloaderapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\securitybaseapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\namespaceapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\systemtopologyapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\processtopologyapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\securityappcontainer.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\realtimeapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\winerror.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\timezoneapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wingdi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winuser.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\tvout.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winnls.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\datetimeapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\stringapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winnls.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wincon.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wincontypes.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\consoleapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\consoleapi2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\consoleapi3.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winver.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\verrsrc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winreg.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\reason.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winnetwk.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\wnnc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\stralign.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winsvc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\mcx.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\imm.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\ime_cmodes.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\glad\\gl.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\khr\\khrplatform.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\stdint.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\glad\\wgl.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\glfw\\glfw3.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\stddef.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\immintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\wmmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\nmmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\smmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\tmmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\pmmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\emmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\xmmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\mmintrin.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\malloc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_malloc.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\zmmintrin.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\stdio.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_stdio_config.h"
]
}
}
@@ -1,935 +0,0 @@
; Listing generated by Microsoft (R) Optimizing Compiler Version 19.37.32824.0
include listing.inc
INCLUDELIB MSVCRTD
INCLUDELIB OLDNAMES
_DATA SEGMENT
COMM infolog:QWORD:0200H
_DATA ENDS
msvcjmc SEGMENT
__0ED14FEE_winpackagefamily@h DB 01H
__F92EF742_winapifamily@h DB 01H
__22E515EB_sdkddkver@h DB 01H
__9C03CD75_concurrencysal@h DB 01H
__CA64BAF1_sal@h DB 01H
__95655E73_vadefs@h DB 01H
__1D560A45_vcruntime@h DB 01H
__F214EFBF_excpt@h DB 01H
__D9B78EDA_stdarg@h DB 01H
__29F49F40_specstrings_undef@h DB 01H
__D0F42932_specstrings_strict@h DB 01H
__F00405FD_sdv_driverspecs@h DB 01H
__173E09CA_driverspecs@h DB 01H
__9A452361_specstrings@h DB 01H
__1B0272D9_corecrt@h DB 01H
__74484FB3_corecrt_wctype@h DB 01H
__1EC467ED_ctype@h DB 01H
__98517906_kernelspecs@h DB 01H
__D3497022_basetsd@h DB 01H
__61CC25A1_errno@h DB 01H
__7061C667_vcruntime_string@h DB 01H
__E4C945B4_corecrt_memcpy_s@h DB 01H
__8EAFF484_corecrt_memory@h DB 01H
__6490AEC5_corecrt_wstring@h DB 01H
__E8295E1E_string@h DB 01H
__7FCB5136_guiddef@h DB 01H
__FF8A9E11_pshpack4@h DB 01H
__D5438902_poppack@h DB 01H
__FB07E2A3_pshpack2@h DB 01H
__F6906775_pshpack8@h DB 01H
__F9415CFA_pshpack1@h DB 01H
__E58C6F1C_apiset@h DB 01H
__A5C52262_ktmtypes@h DB 01H
__FBBA8F9D_winnt@h DB 01H
__A32D3D2C_minwindef@h DB 01H
__7D798299_windef@h DB 01H
__9AE108E9_apisetcconv@h DB 01H
__9CE53D2C_minwinbase@h DB 01H
__5D0AA210_apiquery2@h DB 01H
__4DD4E726_processenv@h DB 01H
__3575CC96_fileapi@h DB 01H
__8EA220E6_fileapifromapp@h DB 01H
__BF9B31FE_debugapi@h DB 01H
__C3AFE134_utilapiset@h DB 01H
__76F69E51_handleapi@h DB 01H
__7E63D784_errhandlingapi@h DB 01H
__FFA7003C_fibersapi@h DB 01H
__8971CECF_namedpipeapi@h DB 01H
__46C9D8A6_profileapi@h DB 01H
__98D4F0A3_heapapi@h DB 01H
__50EF2A88_ioapiset@h DB 01H
__92EA1464_synchapi@h DB 01H
__A53D8AED_interlockedapi@h DB 01H
__B506CAAF_processthreadsapi@h DB 01H
__FF735694_sysinfoapi@h DB 01H
__29589789_memoryapi@h DB 01H
__E9C7A663_enclaveapi@h DB 01H
__D035F9F7_threadpoollegacyapiset@h DB 01H
__C899130C_threadpoolapiset@h DB 01H
__E0441EE7_jobapi@h DB 01H
__CEF86838_jobapi2@h DB 01H
__35AC6B9A_wow64apiset@h DB 01H
__C8AE41A5_libloaderapi@h DB 01H
__CC9E232D_securitybaseapi@h DB 01H
__C9D0C9B8_namespaceapi@h DB 01H
__30FF9CAD_systemtopologyapi@h DB 01H
__4D358795_processtopologyapi@h DB 01H
__40446D10_securityappcontainer@h DB 01H
__3A952EDF_realtimeapiset@h DB 01H
__F4865F4B_winerror@h DB 01H
__53C1BD93_timezoneapi@h DB 01H
__1FFBEDBF_winbase@h DB 01H
__43D3FA34_wingdi@h DB 01H
__D24A7391_tvout@h DB 01H
__7713A6C8_winuser@h DB 01H
__0B345F71_datetimeapi@h DB 01H
__9AC6960C_winnls@h DB 01H
__973A40A8_stringapiset@h DB 01H
__CC46FEE2_wincontypes@h DB 01H
__97D70BE1_consoleapi@h DB 01H
__27EC5E18_consoleapi2@h DB 01H
__262E342F_consoleapi3@h DB 01H
__641DCD70_wincon@h DB 01H
__5A96C7A7_verrsrc@h DB 01H
__B69C6FF2_winver@h DB 01H
__7AEB8C37_reason@h DB 01H
__59F1A8A9_winreg@h DB 01H
__EE0E2B7F_wnnc@h DB 01H
__DCDB7054_winnetwk@h DB 01H
__81DDEDE3_stralign@h DB 01H
__2134D1B4_winsvc@h DB 01H
__11C07376_mcx@h DB 01H
__577CE3E7_ime_cmodes@h DB 01H
__1E72C31E_imm@h DB 01H
__E15BF856_windows@h DB 01H
__DB6DF2FB_framework@h DB 01H
__ED683015_stdint@h DB 01H
__0A43AFA2_khrplatform@h DB 01H
__76346090_gl@h DB 01H
__2AAB3559_wgl@h DB 01H
__13F5961F_stddef@h DB 01H
__937078CB_glfw3@h DB 01H
__11E77DD3_mmintrin@h DB 01H
__45DED006_corecrt_malloc@h DB 01H
__FA77ED4C_malloc@h DB 01H
__9D836611_xmmintrin@h DB 01H
__F8E1EFDD_emmintrin@h DB 01H
__27408754_pmmintrin@h DB 01H
__9799F4D6_tmmintrin@h DB 01H
__BEA2E155_smmintrin@h DB 01H
__DBC06899_nmmintrin@h DB 01H
__0E7B92D7_wmmintrin@h DB 01H
__C5EFDFD0_zmmintrin@h DB 01H
__F2FB7D1A_immintrin@h DB 01H
__09B04B44_StgSharpGraphic@h DB 01H
__44420885_corecrt_stdio_config@h DB 01H
__AB601D8D_corecrt_wstdio@h DB 01H
__C1EC35D3_stdio@h DB 01H
__91140152_mat4@c DB 01H
msvcjmc ENDS
PUBLIC transpose4to2
PUBLIC transpose4to4
PUBLIC det_mat4
PUBLIC deinit_mat4
PUBLIC transpose4to3
PUBLIC __JustMyCode_Default
PUBLIC __xmm@80000000800000008000000080000000
EXTRN __imp__aligned_free:PROC
EXTRN det_mat3_internal:PROC
EXTRN _RTC_CheckStackVars:PROC
EXTRN _RTC_InitBase:PROC
EXTRN _RTC_Shutdown:PROC
EXTRN __CheckForDebuggerJustMyCode:PROC
EXTRN _fltused:DWORD
; COMDAT pdata
pdata SEGMENT
$pdata$transpose4to2 DD imagerel $LN3
DD imagerel $LN3+226
DD imagerel $unwind$transpose4to2
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$transpose4to4 DD imagerel $LN3
DD imagerel $LN3+415
DD imagerel $unwind$transpose4to4
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$det_mat4 DD imagerel $LN3
DD imagerel $LN3+638
DD imagerel $unwind$det_mat4
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$deinit_mat4 DD imagerel $LN3
DD imagerel $LN3+54
DD imagerel $unwind$deinit_mat4
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$transpose4to3 DD imagerel $LN3
DD imagerel $LN3+383
DD imagerel $unwind$transpose4to3
pdata ENDS
; COMDAT __xmm@80000000800000008000000080000000
CONST SEGMENT
__xmm@80000000800000008000000080000000 DB 00H, 00H, 00H, 080H, 00H, 00H, 00H
DB 080H, 00H, 00H, 00H, 080H, 00H, 00H, 00H, 080H
CONST ENDS
; COMDAT rtc$TMZ
rtc$TMZ SEGMENT
_RTC_Shutdown.rtc$TMZ DQ FLAT:_RTC_Shutdown
rtc$TMZ ENDS
; COMDAT rtc$IMZ
rtc$IMZ SEGMENT
_RTC_InitBase.rtc$IMZ DQ FLAT:_RTC_InitBase
rtc$IMZ ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$transpose4to3 DD 025051801H
DD 01132318H
DD 0700c0035H
DD 0500bH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$deinit_mat4 DD 025051301H
DD 010e2313H
DD 07007001dH
DD 05006H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$det_mat4 DD 035053101H
DD 01133318H
DD 0700c00a3H
DD 0500bH
xdata ENDS
; COMDAT CONST
CONST SEGMENT
det_mat4$rtcName$0 DB 072H
DB 065H
DB 074H
DB 076H
DB 065H
DB 063H
DB 00H
ORG $+9
det_mat4$rtcVarDesc DD 0130H
DD 010H
DQ FLAT:det_mat4$rtcName$0
ORG $+48
det_mat4$rtcFrameData DD 01H
DD 00H
DQ FLAT:det_mat4$rtcVarDesc
CONST ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$transpose4to4 DD 025051801H
DD 01132318H
DD 0700c0035H
DD 0500bH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$transpose4to2 DD 025051801H
DD 01132318H
DD 0700c0029H
DD 0500bH
xdata ENDS
; Function compile flags: /Odt
; COMDAT __JustMyCode_Default
_TEXT SEGMENT
__JustMyCode_Default PROC ; COMDAT
00000 c2 00 00 ret 0
__JustMyCode_Default ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpGraphic\code\mat4.c
; COMDAT transpose4to3
_TEXT SEGMENT
t0$ = 16
t1$ = 64
t2$ = 112
t3$ = 160
source$ = 416
target$ = 424
transpose4to3 PROC ; COMDAT
; 32 : {
$LN3:
00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000a 55 push rbp
0000b 57 push rdi
0000c 48 81 ec a8 01
00 00 sub rsp, 424 ; 000001a8H
00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00018 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__91140152_mat4@c
0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
; 33 : __m128 t0 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(1, 0, 1, 0));
00024 b8 10 00 00 00 mov eax, 16
00029 48 6b c0 01 imul rax, rax, 1
0002d 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR source$[rbp]
00034 48 03 c8 add rcx, rax
00037 48 8b c1 mov rax, rcx
0003a 0f 10 00 movups xmm0, XMMWORD PTR [rax]
0003d b8 10 00 00 00 mov eax, 16
00042 48 6b c0 00 imul rax, rax, 0
00046 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR source$[rbp]
0004d 48 03 c8 add rcx, rax
00050 48 8b c1 mov rax, rcx
00053 0f 10 08 movups xmm1, XMMWORD PTR [rax]
00056 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H
0005a 0f 28 c1 movaps xmm0, xmm1
0005d 0f 29 45 10 movaps XMMWORD PTR t0$[rbp], xmm0
; 34 : __m128 t1 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(3, 2, 3, 2));
00061 b8 10 00 00 00 mov eax, 16
00066 48 6b c0 01 imul rax, rax, 1
0006a 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR source$[rbp]
00071 48 03 c8 add rcx, rax
00074 48 8b c1 mov rax, rcx
00077 0f 10 00 movups xmm0, XMMWORD PTR [rax]
0007a b8 10 00 00 00 mov eax, 16
0007f 48 6b c0 00 imul rax, rax, 0
00083 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR source$[rbp]
0008a 48 03 c8 add rcx, rax
0008d 48 8b c1 mov rax, rcx
00090 0f 10 08 movups xmm1, XMMWORD PTR [rax]
00093 0f c6 c8 ee shufps xmm1, xmm0, 238 ; 000000eeH
00097 0f 28 c1 movaps xmm0, xmm1
0009a 0f 29 45 40 movaps XMMWORD PTR t1$[rbp], xmm0
; 35 : __m128 t2 = _mm_shuffle_ps(ALIGN(source->colum[2]), ALIGN(source->colum[3]), _MM_SHUFFLE(1, 0, 1, 0));
0009e b8 10 00 00 00 mov eax, 16
000a3 48 6b c0 03 imul rax, rax, 3
000a7 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR source$[rbp]
000ae 48 03 c8 add rcx, rax
000b1 48 8b c1 mov rax, rcx
000b4 0f 10 00 movups xmm0, XMMWORD PTR [rax]
000b7 b8 10 00 00 00 mov eax, 16
000bc 48 6b c0 02 imul rax, rax, 2
000c0 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR source$[rbp]
000c7 48 03 c8 add rcx, rax
000ca 48 8b c1 mov rax, rcx
000cd 0f 10 08 movups xmm1, XMMWORD PTR [rax]
000d0 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H
000d4 0f 28 c1 movaps xmm0, xmm1
000d7 0f 29 45 70 movaps XMMWORD PTR t2$[rbp], xmm0
; 36 : __m128 t3 = _mm_shuffle_ps(ALIGN(source->colum[2]), ALIGN(source->colum[3]), _MM_SHUFFLE(3, 2, 3, 2));
000db b8 10 00 00 00 mov eax, 16
000e0 48 6b c0 03 imul rax, rax, 3
000e4 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR source$[rbp]
000eb 48 03 c8 add rcx, rax
000ee 48 8b c1 mov rax, rcx
000f1 0f 10 00 movups xmm0, XMMWORD PTR [rax]
000f4 b8 10 00 00 00 mov eax, 16
000f9 48 6b c0 02 imul rax, rax, 2
000fd 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR source$[rbp]
00104 48 03 c8 add rcx, rax
00107 48 8b c1 mov rax, rcx
0010a 0f 10 08 movups xmm1, XMMWORD PTR [rax]
0010d 0f c6 c8 ee shufps xmm1, xmm0, 238 ; 000000eeH
00111 0f 28 c1 movaps xmm0, xmm1
00114 0f 29 85 a0 00
00 00 movaps XMMWORD PTR t3$[rbp], xmm0
; 37 :
; 38 : target->colum[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0));
0011b 0f 28 45 10 movaps xmm0, XMMWORD PTR t0$[rbp]
0011f 0f c6 45 70 88 shufps xmm0, XMMWORD PTR t2$[rbp], 136 ; 00000088H
00124 b8 10 00 00 00 mov eax, 16
00129 48 6b c0 00 imul rax, rax, 0
0012d 48 8b 8d a8 01
00 00 mov rcx, QWORD PTR target$[rbp]
00134 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
; 39 : target->colum[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1));
00138 0f 28 45 10 movaps xmm0, XMMWORD PTR t0$[rbp]
0013c 0f c6 45 70 dd shufps xmm0, XMMWORD PTR t2$[rbp], 221 ; 000000ddH
00141 b8 10 00 00 00 mov eax, 16
00146 48 6b c0 01 imul rax, rax, 1
0014a 48 8b 8d a8 01
00 00 mov rcx, QWORD PTR target$[rbp]
00151 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
; 40 : target->colum[2] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(2, 0, 2, 0));
00155 0f 28 45 40 movaps xmm0, XMMWORD PTR t1$[rbp]
00159 0f c6 85 a0 00
00 00 88 shufps xmm0, XMMWORD PTR t3$[rbp], 136 ; 00000088H
00161 b8 10 00 00 00 mov eax, 16
00166 48 6b c0 02 imul rax, rax, 2
0016a 48 8b 8d a8 01
00 00 mov rcx, QWORD PTR target$[rbp]
00171 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
; 41 :
; 42 : }
00175 48 8d a5 88 01
00 00 lea rsp, QWORD PTR [rbp+392]
0017c 5f pop rdi
0017d 5d pop rbp
0017e c3 ret 0
transpose4to3 ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpGraphic\code\mat4.c
; COMDAT deinit_mat4
_TEXT SEGMENT
matPtr$ = 224
deinit_mat4 PROC ; COMDAT
; 67 : {
$LN3:
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 55 push rbp
00006 57 push rdi
00007 48 81 ec e8 00
00 00 sub rsp, 232 ; 000000e8H
0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00013 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__91140152_mat4@c
0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
; 68 : _aligned_free(matPtr);
0001f 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR matPtr$[rbp]
00026 ff 15 00 00 00
00 call QWORD PTR __imp__aligned_free
; 69 : }
0002c 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
00033 5f pop rdi
00034 5d pop rbp
00035 c3 ret 0
deinit_mat4 ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpGraphic\code\mat4.c
; COMDAT det_mat4
_TEXT SEGMENT
mc0$ = 16
mc1$ = 64
mc2$ = 112
mc3$ = 160
cogeneration$ = 208
retvec$ = 256
$T4 = 688
$T5 = 736
$T6 = 784
$T7 = 832
$T8 = 880
$T9 = 928
$T10 = 976
$T11 = 1024
$T12 = 1072
$T13 = 1120
$T14 = 1168
$T15 = 1216
tv85 = 1236
tv90 = 1240
tv95 = 1244
matPtr$ = 1280
transpose$ = 1288
det_mat4 PROC ; COMDAT
; 47 : {
$LN3:
00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000a 55 push rbp
0000b 57 push rdi
0000c 48 81 ec 18 05
00 00 sub rsp, 1304 ; 00000518H
00013 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
00018 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
0001d b9 da 00 00 00 mov ecx, 218 ; 000000daH
00022 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00027 f3 ab rep stosd
00029 48 8b 8c 24 38
05 00 00 mov rcx, QWORD PTR [rsp+1336]
00031 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__91140152_mat4@c
00038 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
; 48 : __m128 mc0 = ALIGN(matPtr->colum[0]);
0003d b8 10 00 00 00 mov eax, 16
00042 48 6b c0 00 imul rax, rax, 0
00046 48 8b 8d 00 05
00 00 mov rcx, QWORD PTR matPtr$[rbp]
0004d 48 03 c8 add rcx, rax
00050 48 8b c1 mov rax, rcx
00053 0f 10 00 movups xmm0, XMMWORD PTR [rax]
00056 0f 29 45 10 movaps XMMWORD PTR mc0$[rbp], xmm0
; 49 : __m128 mc1 = ALIGN(matPtr->colum[1]);
0005a b8 10 00 00 00 mov eax, 16
0005f 48 6b c0 01 imul rax, rax, 1
00063 48 8b 8d 00 05
00 00 mov rcx, QWORD PTR matPtr$[rbp]
0006a 48 03 c8 add rcx, rax
0006d 48 8b c1 mov rax, rcx
00070 0f 10 00 movups xmm0, XMMWORD PTR [rax]
00073 0f 29 45 40 movaps XMMWORD PTR mc1$[rbp], xmm0
; 50 : __m128 mc2 = ALIGN(matPtr->colum[2]);
00077 b8 10 00 00 00 mov eax, 16
0007c 48 6b c0 02 imul rax, rax, 2
00080 48 8b 8d 00 05
00 00 mov rcx, QWORD PTR matPtr$[rbp]
00087 48 03 c8 add rcx, rax
0008a 48 8b c1 mov rax, rcx
0008d 0f 10 00 movups xmm0, XMMWORD PTR [rax]
00090 0f 29 45 70 movaps XMMWORD PTR mc2$[rbp], xmm0
; 51 : __m128 mc3 = ALIGN(matPtr->colum[3]);
00094 b8 10 00 00 00 mov eax, 16
00099 48 6b c0 03 imul rax, rax, 3
0009d 48 8b 8d 00 05
00 00 mov rcx, QWORD PTR matPtr$[rbp]
000a4 48 03 c8 add rcx, rax
000a7 48 8b c1 mov rax, rcx
000aa 0f 10 00 movups xmm0, XMMWORD PTR [rax]
000ad 0f 29 85 a0 00
00 00 movaps XMMWORD PTR mc3$[rbp], xmm0
; 52 :
; 53 : __m128 cogeneration = _mm_set_ps(
000b4 0f 28 85 a0 00
00 00 movaps xmm0, XMMWORD PTR mc3$[rbp]
000bb 0f 29 85 10 03
00 00 movaps XMMWORD PTR $T6[rbp], xmm0
000c2 0f 28 45 70 movaps xmm0, XMMWORD PTR mc2$[rbp]
000c6 0f 29 85 e0 02
00 00 movaps XMMWORD PTR $T5[rbp], xmm0
000cd 0f 28 45 40 movaps xmm0, XMMWORD PTR mc1$[rbp]
000d1 0f 29 85 b0 02
00 00 movaps XMMWORD PTR $T4[rbp], xmm0
000d8 4c 8d 85 10 03
00 00 lea r8, QWORD PTR $T6[rbp]
000df 48 8d 95 e0 02
00 00 lea rdx, QWORD PTR $T5[rbp]
000e6 48 8d 8d b0 02
00 00 lea rcx, QWORD PTR $T4[rbp]
000ed e8 00 00 00 00 call det_mat3_internal
000f2 f3 0f 11 85 d4
04 00 00 movss DWORD PTR tv85[rbp], xmm0
000fa 0f 28 8d a0 00
00 00 movaps xmm1, XMMWORD PTR mc3$[rbp]
00101 0f 29 8d a0 03
00 00 movaps XMMWORD PTR $T9[rbp], xmm1
00108 0f 28 4d 70 movaps xmm1, XMMWORD PTR mc2$[rbp]
0010c 0f 29 8d 70 03
00 00 movaps XMMWORD PTR $T8[rbp], xmm1
00113 0f 28 4d 10 movaps xmm1, XMMWORD PTR mc0$[rbp]
00117 0f 29 8d 40 03
00 00 movaps XMMWORD PTR $T7[rbp], xmm1
0011e 4c 8d 85 a0 03
00 00 lea r8, QWORD PTR $T9[rbp]
00125 48 8d 95 70 03
00 00 lea rdx, QWORD PTR $T8[rbp]
0012c 48 8d 8d 40 03
00 00 lea rcx, QWORD PTR $T7[rbp]
00133 e8 00 00 00 00 call det_mat3_internal
00138 f3 0f 11 85 d8
04 00 00 movss DWORD PTR tv90[rbp], xmm0
00140 0f 28 8d a0 00
00 00 movaps xmm1, XMMWORD PTR mc3$[rbp]
00147 0f 29 8d 30 04
00 00 movaps XMMWORD PTR $T12[rbp], xmm1
0014e 0f 28 4d 40 movaps xmm1, XMMWORD PTR mc1$[rbp]
00152 0f 29 8d 00 04
00 00 movaps XMMWORD PTR $T11[rbp], xmm1
00159 0f 28 4d 10 movaps xmm1, XMMWORD PTR mc0$[rbp]
0015d 0f 29 8d d0 03
00 00 movaps XMMWORD PTR $T10[rbp], xmm1
00164 4c 8d 85 30 04
00 00 lea r8, QWORD PTR $T12[rbp]
0016b 48 8d 95 00 04
00 00 lea rdx, QWORD PTR $T11[rbp]
00172 48 8d 8d d0 03
00 00 lea rcx, QWORD PTR $T10[rbp]
00179 e8 00 00 00 00 call det_mat3_internal
0017e f3 0f 11 85 dc
04 00 00 movss DWORD PTR tv95[rbp], xmm0
00186 0f 28 4d 70 movaps xmm1, XMMWORD PTR mc2$[rbp]
0018a 0f 29 8d c0 04
00 00 movaps XMMWORD PTR $T15[rbp], xmm1
00191 0f 28 4d 40 movaps xmm1, XMMWORD PTR mc1$[rbp]
00195 0f 29 8d 90 04
00 00 movaps XMMWORD PTR $T14[rbp], xmm1
0019c 0f 28 4d 10 movaps xmm1, XMMWORD PTR mc0$[rbp]
001a0 0f 29 8d 60 04
00 00 movaps XMMWORD PTR $T13[rbp], xmm1
001a7 4c 8d 85 c0 04
00 00 lea r8, QWORD PTR $T15[rbp]
001ae 48 8d 95 90 04
00 00 lea rdx, QWORD PTR $T14[rbp]
001b5 48 8d 8d 60 04
00 00 lea rcx, QWORD PTR $T13[rbp]
001bc e8 00 00 00 00 call det_mat3_internal
001c1 f3 0f 10 8d dc
04 00 00 movss xmm1, DWORD PTR tv95[rbp]
001c9 f3 0f 10 95 d8
04 00 00 movss xmm2, DWORD PTR tv90[rbp]
001d1 f3 0f 10 9d d4
04 00 00 movss xmm3, DWORD PTR tv85[rbp]
001d9 0f 14 c8 unpcklps xmm1, xmm0
001dc 0f 14 da unpcklps xmm3, xmm2
001df 0f 28 c3 movaps xmm0, xmm3
001e2 0f 16 c1 movlhps xmm0, xmm1
001e5 0f 29 85 d0 00
00 00 movaps XMMWORD PTR cogeneration$[rbp], xmm0
; 54 : det_mat3_internal(mc0, mc1, mc2),
; 55 : det_mat3_internal(mc0, mc1, mc3),
; 56 : det_mat3_internal(mc0, mc2, mc3),
; 57 : det_mat3_internal(mc1, mc2, mc3)
; 58 : );
; 59 : __m128 retvec = _mm_mul_ps(ALIGN(transpose->colum[3]),cogeneration);
001ec b8 10 00 00 00 mov eax, 16
001f1 48 6b c0 03 imul rax, rax, 3
001f5 48 8b 8d 08 05
00 00 mov rcx, QWORD PTR transpose$[rbp]
001fc 48 03 c8 add rcx, rax
001ff 48 8b c1 mov rax, rcx
00202 0f 10 00 movups xmm0, XMMWORD PTR [rax]
00205 0f 59 85 d0 00
00 00 mulps xmm0, XMMWORD PTR cogeneration$[rbp]
0020c 0f 29 85 00 01
00 00 movaps XMMWORD PTR retvec$[rbp], xmm0
; 60 : retvec = _mm_hsub_ps(retvec,retvec);
00213 0f 28 85 00 01
00 00 movaps xmm0, XMMWORD PTR retvec$[rbp]
0021a f2 0f 7d 85 00
01 00 00 hsubps xmm0, XMMWORD PTR retvec$[rbp]
00222 0f 29 85 00 01
00 00 movaps XMMWORD PTR retvec$[rbp], xmm0
; 61 : retvec = _mm_hadd_ps(retvec,retvec);
00229 0f 28 85 00 01
00 00 movaps xmm0, XMMWORD PTR retvec$[rbp]
00230 f2 0f 7c 85 00
01 00 00 haddps xmm0, XMMWORD PTR retvec$[rbp]
00238 0f 29 85 00 01
00 00 movaps XMMWORD PTR retvec$[rbp], xmm0
; 62 : return -retvec.m128_f32[0];
0023f b8 04 00 00 00 mov eax, 4
00244 48 6b c0 00 imul rax, rax, 0
00248 f3 0f 10 84 05
00 01 00 00 movss xmm0, DWORD PTR retvec$[rbp+rax]
00251 0f 57 05 00 00
00 00 xorps xmm0, DWORD PTR __xmm@80000000800000008000000080000000
; 63 :
; 64 : }
00258 f3 0f 7f 44 24
20 movdqu XMMWORD PTR [rsp+32], xmm0
0025e 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
00262 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:det_mat4$rtcFrameData
00269 e8 00 00 00 00 call _RTC_CheckStackVars
0026e f3 0f 6f 44 24
20 movdqu xmm0, XMMWORD PTR [rsp+32]
00274 48 8d a5 e8 04
00 00 lea rsp, QWORD PTR [rbp+1256]
0027b 5f pop rdi
0027c 5d pop rbp
0027d c3 ret 0
det_mat4 ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpGraphic\code\mat4.c
; COMDAT transpose4to4
_TEXT SEGMENT
t0$ = 16
t1$ = 64
t2$ = 112
t3$ = 160
source$ = 416
target$ = 424
transpose4to4 PROC ; COMDAT
; 18 : {
$LN3:
00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000a 55 push rbp
0000b 57 push rdi
0000c 48 81 ec a8 01
00 00 sub rsp, 424 ; 000001a8H
00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00018 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__91140152_mat4@c
0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
; 19 : __m128 t0 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(1, 0, 1, 0));
00024 b8 10 00 00 00 mov eax, 16
00029 48 6b c0 01 imul rax, rax, 1
0002d 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR source$[rbp]
00034 48 03 c8 add rcx, rax
00037 48 8b c1 mov rax, rcx
0003a 0f 10 00 movups xmm0, XMMWORD PTR [rax]
0003d b8 10 00 00 00 mov eax, 16
00042 48 6b c0 00 imul rax, rax, 0
00046 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR source$[rbp]
0004d 48 03 c8 add rcx, rax
00050 48 8b c1 mov rax, rcx
00053 0f 10 08 movups xmm1, XMMWORD PTR [rax]
00056 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H
0005a 0f 28 c1 movaps xmm0, xmm1
0005d 0f 29 45 10 movaps XMMWORD PTR t0$[rbp], xmm0
; 20 : __m128 t1 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(3, 2, 3, 2));
00061 b8 10 00 00 00 mov eax, 16
00066 48 6b c0 01 imul rax, rax, 1
0006a 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR source$[rbp]
00071 48 03 c8 add rcx, rax
00074 48 8b c1 mov rax, rcx
00077 0f 10 00 movups xmm0, XMMWORD PTR [rax]
0007a b8 10 00 00 00 mov eax, 16
0007f 48 6b c0 00 imul rax, rax, 0
00083 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR source$[rbp]
0008a 48 03 c8 add rcx, rax
0008d 48 8b c1 mov rax, rcx
00090 0f 10 08 movups xmm1, XMMWORD PTR [rax]
00093 0f c6 c8 ee shufps xmm1, xmm0, 238 ; 000000eeH
00097 0f 28 c1 movaps xmm0, xmm1
0009a 0f 29 45 40 movaps XMMWORD PTR t1$[rbp], xmm0
; 21 : __m128 t2 = _mm_shuffle_ps(ALIGN(source->colum[2]), ALIGN(source->colum[3]), _MM_SHUFFLE(1, 0, 1, 0));
0009e b8 10 00 00 00 mov eax, 16
000a3 48 6b c0 03 imul rax, rax, 3
000a7 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR source$[rbp]
000ae 48 03 c8 add rcx, rax
000b1 48 8b c1 mov rax, rcx
000b4 0f 10 00 movups xmm0, XMMWORD PTR [rax]
000b7 b8 10 00 00 00 mov eax, 16
000bc 48 6b c0 02 imul rax, rax, 2
000c0 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR source$[rbp]
000c7 48 03 c8 add rcx, rax
000ca 48 8b c1 mov rax, rcx
000cd 0f 10 08 movups xmm1, XMMWORD PTR [rax]
000d0 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H
000d4 0f 28 c1 movaps xmm0, xmm1
000d7 0f 29 45 70 movaps XMMWORD PTR t2$[rbp], xmm0
; 22 : __m128 t3 = _mm_shuffle_ps(ALIGN(source->colum[2]), ALIGN(source->colum[3]), _MM_SHUFFLE(3, 2, 3, 2));
000db b8 10 00 00 00 mov eax, 16
000e0 48 6b c0 03 imul rax, rax, 3
000e4 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR source$[rbp]
000eb 48 03 c8 add rcx, rax
000ee 48 8b c1 mov rax, rcx
000f1 0f 10 00 movups xmm0, XMMWORD PTR [rax]
000f4 b8 10 00 00 00 mov eax, 16
000f9 48 6b c0 02 imul rax, rax, 2
000fd 48 8b 8d a0 01
00 00 mov rcx, QWORD PTR source$[rbp]
00104 48 03 c8 add rcx, rax
00107 48 8b c1 mov rax, rcx
0010a 0f 10 08 movups xmm1, XMMWORD PTR [rax]
0010d 0f c6 c8 ee shufps xmm1, xmm0, 238 ; 000000eeH
00111 0f 28 c1 movaps xmm0, xmm1
00114 0f 29 85 a0 00
00 00 movaps XMMWORD PTR t3$[rbp], xmm0
; 23 :
; 24 : target->colum[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0));
0011b 0f 28 45 10 movaps xmm0, XMMWORD PTR t0$[rbp]
0011f 0f c6 45 70 88 shufps xmm0, XMMWORD PTR t2$[rbp], 136 ; 00000088H
00124 b8 10 00 00 00 mov eax, 16
00129 48 6b c0 00 imul rax, rax, 0
0012d 48 8b 8d a8 01
00 00 mov rcx, QWORD PTR target$[rbp]
00134 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
; 25 : target->colum[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1));
00138 0f 28 45 10 movaps xmm0, XMMWORD PTR t0$[rbp]
0013c 0f c6 45 70 dd shufps xmm0, XMMWORD PTR t2$[rbp], 221 ; 000000ddH
00141 b8 10 00 00 00 mov eax, 16
00146 48 6b c0 01 imul rax, rax, 1
0014a 48 8b 8d a8 01
00 00 mov rcx, QWORD PTR target$[rbp]
00151 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
; 26 : target->colum[2] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(2, 0, 2, 0));
00155 0f 28 45 40 movaps xmm0, XMMWORD PTR t1$[rbp]
00159 0f c6 85 a0 00
00 00 88 shufps xmm0, XMMWORD PTR t3$[rbp], 136 ; 00000088H
00161 b8 10 00 00 00 mov eax, 16
00166 48 6b c0 02 imul rax, rax, 2
0016a 48 8b 8d a8 01
00 00 mov rcx, QWORD PTR target$[rbp]
00171 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
; 27 : target->colum[3] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(3, 1, 3, 1));
00175 0f 28 45 40 movaps xmm0, XMMWORD PTR t1$[rbp]
00179 0f c6 85 a0 00
00 00 dd shufps xmm0, XMMWORD PTR t3$[rbp], 221 ; 000000ddH
00181 b8 10 00 00 00 mov eax, 16
00186 48 6b c0 03 imul rax, rax, 3
0018a 48 8b 8d a8 01
00 00 mov rcx, QWORD PTR target$[rbp]
00191 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
; 28 :
; 29 : }
00195 48 8d a5 88 01
00 00 lea rsp, QWORD PTR [rbp+392]
0019c 5f pop rdi
0019d 5d pop rbp
0019e c3 ret 0
transpose4to4 ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpGraphic\code\mat4.c
; COMDAT transpose4to2
_TEXT SEGMENT
t0$ = 16
t2$ = 64
source$ = 320
target$ = 328
transpose4to2 PROC ; COMDAT
; 9 : {
$LN3:
00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
0000a 55 push rbp
0000b 57 push rdi
0000c 48 81 ec 48 01
00 00 sub rsp, 328 ; 00000148H
00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00018 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__91140152_mat4@c
0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
; 10 : __m128 t0 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(1, 0, 1, 0));
00024 b8 10 00 00 00 mov eax, 16
00029 48 6b c0 01 imul rax, rax, 1
0002d 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR source$[rbp]
00034 48 03 c8 add rcx, rax
00037 48 8b c1 mov rax, rcx
0003a 0f 10 00 movups xmm0, XMMWORD PTR [rax]
0003d b8 10 00 00 00 mov eax, 16
00042 48 6b c0 00 imul rax, rax, 0
00046 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR source$[rbp]
0004d 48 03 c8 add rcx, rax
00050 48 8b c1 mov rax, rcx
00053 0f 10 08 movups xmm1, XMMWORD PTR [rax]
00056 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H
0005a 0f 28 c1 movaps xmm0, xmm1
0005d 0f 29 45 10 movaps XMMWORD PTR t0$[rbp], xmm0
; 11 : __m128 t2 = _mm_shuffle_ps(ALIGN(source->colum[2]), ALIGN(source->colum[3]), _MM_SHUFFLE(1, 0, 1, 0));
00061 b8 10 00 00 00 mov eax, 16
00066 48 6b c0 03 imul rax, rax, 3
0006a 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR source$[rbp]
00071 48 03 c8 add rcx, rax
00074 48 8b c1 mov rax, rcx
00077 0f 10 00 movups xmm0, XMMWORD PTR [rax]
0007a b8 10 00 00 00 mov eax, 16
0007f 48 6b c0 02 imul rax, rax, 2
00083 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR source$[rbp]
0008a 48 03 c8 add rcx, rax
0008d 48 8b c1 mov rax, rcx
00090 0f 10 08 movups xmm1, XMMWORD PTR [rax]
00093 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H
00097 0f 28 c1 movaps xmm0, xmm1
0009a 0f 29 45 40 movaps XMMWORD PTR t2$[rbp], xmm0
; 12 :
; 13 : target->colum[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0));
0009e 0f 28 45 10 movaps xmm0, XMMWORD PTR t0$[rbp]
000a2 0f c6 45 40 88 shufps xmm0, XMMWORD PTR t2$[rbp], 136 ; 00000088H
000a7 b8 10 00 00 00 mov eax, 16
000ac 48 6b c0 00 imul rax, rax, 0
000b0 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR target$[rbp]
000b7 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
; 14 : target->colum[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1));
000bb 0f 28 45 10 movaps xmm0, XMMWORD PTR t0$[rbp]
000bf 0f c6 45 40 dd shufps xmm0, XMMWORD PTR t2$[rbp], 221 ; 000000ddH
000c4 b8 10 00 00 00 mov eax, 16
000c9 48 6b c0 01 imul rax, rax, 1
000cd 48 8b 8d 48 01
00 00 mov rcx, QWORD PTR target$[rbp]
000d4 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
; 15 : }
000d8 48 8d a5 28 01
00 00 lea rsp, QWORD PTR [rbp+296]
000df 5f pop rdi
000e0 5d pop rbp
000e1 c3 ret 0
transpose4to2 ENDP
_TEXT ENDS
END
Binary file not shown.
@@ -1,153 +0,0 @@
{
"Version": "1.2",
"Data": {
"Source": "d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\code\\stgsharpgraphic.c",
"ProvidedModule": "",
"Includes": [
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\framework.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\windows.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\winapifamily.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\winpackagefamily.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\sdkddkver.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\excpt.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\vcruntime.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\sal.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\concurrencysal.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\vadefs.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\stdarg.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\windef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\minwindef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\specstrings.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\specstrings_strict.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\specstrings_undef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\driverspecs.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\sdv_driverspecs.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winnt.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\ctype.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_wctype.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\kernelspecs.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\basetsd.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\guiddef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\string.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_memory.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_memcpy_s.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\errno.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\vcruntime_string.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_wstring.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack8.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\apiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\ktmtypes.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winbase.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\apisetcconv.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\minwinbase.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\apiquery2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\processenv.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\fileapifromapp.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\fileapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\debugapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\utilapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\handleapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\errhandlingapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\fibersapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\namedpipeapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\profileapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\heapapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\ioapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\synchapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\interlockedapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\processthreadsapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\sysinfoapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\memoryapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\enclaveapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\threadpoollegacyapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\threadpoolapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\jobapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\jobapi2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wow64apiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\libloaderapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\securitybaseapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\namespaceapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\systemtopologyapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\processtopologyapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\securityappcontainer.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\realtimeapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\winerror.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\timezoneapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wingdi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winuser.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\tvout.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winnls.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\datetimeapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\stringapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winnls.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wincon.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wincontypes.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\consoleapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\consoleapi2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\consoleapi3.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winver.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\verrsrc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winreg.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\reason.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winnetwk.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\wnnc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\stralign.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winsvc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\mcx.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\imm.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\ime_cmodes.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\glad\\gl.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\khr\\khrplatform.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\stdint.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\stdio.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_stdio_config.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\stgsharpgraphic.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\glad\\wgl.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\glfw\\glfw3.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\stddef.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\immintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\wmmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\nmmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\smmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\tmmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\pmmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\emmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\xmmintrin.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\mmintrin.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\malloc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_malloc.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\zmmintrin.h"
]
}
}
Binary file not shown.
Binary file not shown.
@@ -1,240 +0,0 @@
{
"Version": "1.2",
"Data": {
"Source": "d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\code\\glad\\wgl.c",
"ProvidedModule": "",
"Includes": [
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\stdio.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\vcruntime.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\sal.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\concurrencysal.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\vadefs.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_wstdio.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_stdio_config.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\stdlib.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_malloc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_search.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\stddef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_wstdlib.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\limits.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\string.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_memory.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_memcpy_s.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\errno.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\vcruntime_string.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_wstring.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\glad\\wgl.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\windows.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\winapifamily.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\winpackagefamily.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\sdkddkver.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\excpt.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\stdarg.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\windef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\minwindef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\specstrings.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\specstrings_strict.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\specstrings_undef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\driverspecs.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\sdv_driverspecs.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winnt.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\ctype.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\ucrt\\corecrt_wctype.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\kernelspecs.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\basetsd.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\guiddef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack8.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\apiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\ktmtypes.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winbase.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\apisetcconv.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\minwinbase.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\apiquery2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\processenv.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\fileapifromapp.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\fileapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\debugapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\utilapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\handleapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\errhandlingapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\fibersapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\namedpipeapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\profileapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\heapapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\ioapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\synchapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\interlockedapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\processthreadsapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\sysinfoapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\memoryapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\enclaveapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\threadpoollegacyapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\threadpoolapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\jobapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\jobapi2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wow64apiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\libloaderapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\securitybaseapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\namespaceapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\systemtopologyapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\processtopologyapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\securityappcontainer.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\realtimeapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\winerror.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\timezoneapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wingdi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack4.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winuser.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\tvout.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winnls.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\datetimeapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\stringapiset.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winnls.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wincon.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wincontypes.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\consoleapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\consoleapi2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\consoleapi3.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winver.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\verrsrc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winreg.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\reason.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winnetwk.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\wnnc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\cderr.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\dde.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\ddeml.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\dlgs.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\lzexpand.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\mmsystem.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\mmsyscom.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\mciapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\mmiscapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\mmiscapi2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\playsoundapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\mmeapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\timeapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\joystickapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\nb30.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\rpc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack8.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\rpcdce.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\rpcdcep.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\rpcnsi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\rpcnterr.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\rpcasync.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack8.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\shellapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winperf.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack8.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winsock.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\inaddr.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\wincrypt.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\bcrypt.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\ncrypt.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\dpapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winefs.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winscard.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\wtypes.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\rpcndr.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack8.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\rpcnsip.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\rpcsal.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\wtypesbase.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\guiddef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winioctl.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack1.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\winsmcrd.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winspool.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\prsht.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack8.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\ole2.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack8.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\objbase.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack8.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\combaseapi.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack8.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\unknwnbase.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\objidlbase.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\guiddef.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\cguid.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\coml2api.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\objidl.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\unknwn.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\propidlbase.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\oaidl.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\urlmon.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\oleidl.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\servprov.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\msxml.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\propidl.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\oleauto.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\pshpack8.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\poppack.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\commdlg.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\prsht.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\shared\\stralign.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\winsvc.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\mcx.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\imm.h",
"c:\\program files (x86)\\windows kits\\10\\include\\10.0.22621.0\\um\\ime_cmodes.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\glad\\gl.h",
"d:\\nitloadindustry\\研究项目\\1-flagship\\th2020\\projectfile\\源代码\\stgsharpgraphic\\include\\khr\\khrplatform.h",
"c:\\program files\\microsoft visual studio\\2022\\enterprise\\vc\\tools\\msvc\\14.37.32822\\include\\stdint.h"
]
}
}
File diff suppressed because it is too large Load Diff
Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More