UWP CreateDDSTextureFromFile 无法加载 .dds 文件
UWP CreateDDSTextureFromFile unable to loard .dds file
我目前正在尝试将 .dds 文件加载到多维数据集中,但在加载文件时遇到问题。
我正在使用 nuget 的 DirectXTK 库,更具体地说是 DDSTextureLoarder。
CreateDDSTextureFromFile(m_deviceResources->GetD3DDevice(), L"..\Assests\rocks.DDS", nullptr, &cubeStoneRV);
出现的错误:
错误 LNK2019 未解析的外部符号 __imp__CreateFileW@28 在函数 "long __cdecl DirectX::LoaderHelpers::LoadTextureDataFromFile(wchar_t const *,class std::unique_ptr > &,struct DirectX::DDS_HEADER const * *,unsigned char const * *,unsigned int *)" 中引用 (?LoadTextureDataFromFile@LoaderHelpers@DirectX@@YAJPB_WAAV?$unique_ptr@$$BY0A @EU?$default_delete@$$BY0A@E@std@@@std@@PAPBUDDS_HEADER@2@PAPBEPAI@Z)
我认为问题在于尝试获取 D3DDevice,但我尝试过的所有方法都没有奏效。
这项工作是从基础 UWP DirectX11 模板和外部 Sample3DSceneRenderer/phc 开始的,没有其他变化。
编辑:如果有更好的方法,我欢迎 advice/suggestions
对于 UWP,您不能使用 CreateFile
。您必须使用 CreateFile2
.
#if (_WIN32_WINNT >= _WIN32_WINNT_WIN8)
ScopedHandle hFile(safe_handle(CreateFile2(fileName,
GENERIC_READ,
FILE_SHARE_READ,
OPEN_EXISTING,
nullptr)));
#else
ScopedHandle hFile(safe_handle(CreateFileW(fileName,
GENERIC_READ,
FILE_SHARE_READ,
nullptr,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
nullptr)));
#endif
我在 DirectX Tool Kit already, but you need to use the correct build configuration of the library. Likely you are using the desktop NuGet version rather than the UWP NuGet 版本中这样做。
我目前正在尝试将 .dds 文件加载到多维数据集中,但在加载文件时遇到问题。
我正在使用 nuget 的 DirectXTK 库,更具体地说是 DDSTextureLoarder。
CreateDDSTextureFromFile(m_deviceResources->GetD3DDevice(), L"..\Assests\rocks.DDS", nullptr, &cubeStoneRV);
出现的错误:
错误 LNK2019 未解析的外部符号 __imp__CreateFileW@28 在函数 "long __cdecl DirectX::LoaderHelpers::LoadTextureDataFromFile(wchar_t const *,class std::unique_ptr > &,struct DirectX::DDS_HEADER const * *,unsigned char const * *,unsigned int *)" 中引用 (?LoadTextureDataFromFile@LoaderHelpers@DirectX@@YAJPB_WAAV?$unique_ptr@$$BY0A @EU?$default_delete@$$BY0A@E@std@@@std@@PAPBUDDS_HEADER@2@PAPBEPAI@Z)
我认为问题在于尝试获取 D3DDevice,但我尝试过的所有方法都没有奏效。
这项工作是从基础 UWP DirectX11 模板和外部 Sample3DSceneRenderer/phc 开始的,没有其他变化。
编辑:如果有更好的方法,我欢迎 advice/suggestions
对于 UWP,您不能使用 CreateFile
。您必须使用 CreateFile2
.
#if (_WIN32_WINNT >= _WIN32_WINNT_WIN8)
ScopedHandle hFile(safe_handle(CreateFile2(fileName,
GENERIC_READ,
FILE_SHARE_READ,
OPEN_EXISTING,
nullptr)));
#else
ScopedHandle hFile(safe_handle(CreateFileW(fileName,
GENERIC_READ,
FILE_SHARE_READ,
nullptr,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
nullptr)));
#endif
我在 DirectX Tool Kit already, but you need to use the correct build configuration of the library. Likely you are using the desktop NuGet version rather than the UWP NuGet 版本中这样做。