到目前为止,我尝试使用DirectX 11项目执行此操作以加载纹理:
我下载了DirectXTex源代码,将源文件包含到我的项目中并尝试进行编译,但出现错误。我从这些头文件有错误:WICTextureLoader.h
,DDSTextureLoader.h
,和DirectXTex.h
。错误来自头文件,而不是我自己的代码。然后,我尝试了WICTextureLoader11.h
和DDSTextureLoader11.h
,得到的错误是undefined reference to the function CreateWICTextureFromFile()...
(或相同的,但使用DDS)。
我认为,这里的问题可能是编译器(我使用Clang / GCC)找不到.lib
文件?但是,这里有些人提到您可以将源文件放入文件夹中,一切都会好起来的。好像对我来说不好。如果这是问题所在,有没有办法在.lib
不进行VS安装和其他操作的情况下获取二进制文件()?
DirectXTex库可以使用Windows或Visual C ++的clang / LLVM构建。该项目包括一个使用CMake构建DirectXTex库的CMakeLists.txt,以及可选的命令行工具。如果您有自己的品牌解决方案,则可以通过引用该文件来制定详细信息。
要使用DirectXTex库函数(又名LoadWICFromFile
,Compress
等等),您需要链接到DirectXTex库,您可以通过add_subdirectory
和在CMake中进行操作target_link_libraries
。您还需要添加包含路径:
要从自己的CMake使用它:
add_subdirectory(${CMAKE_SOURCE_DIR}/../DirectXTex ${CMAKE_BINARY_DIR}/bin/CMake/DirectXTex)
target_link_libraries(${PROJECT_NAME} DirectXTex)
target_include_directories(${PROJECT_NAME} PRIVATE ../DirectXTex/DirectXTex)
请记住,DirectXTex软件包还包括独立模块(DDSTextureLoader,WICTextureLoader和ScreenGrab),如果您想要基本的运行时加载而没有转换,调整大小,压缩等所需的所有代码,则可以使用这些模块代替DirectXTex。
要使用独立模块,需要将标头和.cpp文件都添加到项目中-它们不在DirectXTex.lib中。
所以你的情况,从包括该目录既WICTextureLoader11.h
与WICTextureLoader11.cpp
获得的Direct3D的版本11 CreateWICTextureFromFile
。出现链接错误的原因是您没有将cpp文件添加到项目中。
在DirectX的工具包还包括
DDSTextureLoader
,WICTextureLoader
和ScreenGrab
。这些版本集成在中DirectXTK.lib
。可以完全不用DirectXTex,而可以使用该项目的CMakeLists.txt并将其引用为:
add_subdirectory(${CMAKE_SOURCE_DIR}/../DirectXT ${CMAKE_BINARY_DIR}/bin/CMake/DirectXTK)
target_link_libraries(${PROJECT_NAME} DirectXTK)
target_include_directories(${PROJECT_NAME} PRIVATE ../DirectXTK/Inc)
请参阅WICTextureLoader文档和此博客文章。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句