我按照本指南创建了一个非常基本的 Vulkan 程序,出于某种原因,即使完全复制了指南中的代码(并且没有使用我自己的版本,该版本略有不同并根据我的需要进行了修改),我仍然收到以下两个验证启动程序时的层错误:
validation layer: loader_create_instance_chain: Failed to find 'vkGetInstanceProcAddr' in layer
C:\ProgramData\obs-studio-hook\.\graphics-hook32.dll
validation layer: loader_create_device_chain: Failed to find 'vkGetInstanceProcAddr' in layer
C:\ProgramData\obs-studio-hook\.\graphics-hook32.dll. Skipping layer.
而且我仍然无法弄清楚这个错误是怎么回事,我也无法在网上找到关于这个特定错误的正确信息。
我有一个线索,而且很重要——我正在使用 CLion,这意味着我需要一个CMakeLists.txt
文件来构建整个项目及其依赖项,并且在指南中它们没有显示如何正确执行。
现在,我的CMakeLists.txt
文件如下所示:
# This CMakeLists.txt file is not optimized and is probably full of bad practices.
# But it works.
# - Need to make sure no unnecessary binaries are linked
# - Need to make sure local variables like ${PROJECT_NAME} are used wherever they can
cmake_minimum_required(VERSION 3.17)
project(Sandbox)
add_executable(Sandbox main.cpp)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++17")
set(glm_DIR "path/to/Libraries/glm/cmake/glm")
find_package(glm REQUIRED)
target_link_libraries(Sandbox glm::glm)
find_package(Vulkan) # Probably confirmed to be elegant
target_link_libraries(Sandbox Vulkan::Vulkan)
include_directories("path/to/Libraries/stb")
include_directories("path/to/Libraries/tinyobjloader")
set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
# This probably causes the glfw folder to appear in the project window
add_subdirectory("path/to/Libraries/glfw-3.3.2" build)
target_link_libraries(Sandbox glfw)
重要的是要知道我是 cmake 的新手,在 Windows 10 上工作并且程序运行正常(实际窗口看起来不错,只有控制台令人担忧)。
如果有人可以帮助解决这个问题,将不胜感激。此外,对 的任何优化CMakeLists.txt
都会很棒!
提前致谢!