Vulkan vkCreateWin32SurfaceKHR 加载失败
Vulkan vkCreateWin32SurfaceKHR fails to load
嘿,我正在尝试使用 Vulkan 创建一个 Windows Surface
但是不知何故 vkGetInstanceProcAddr
无法加载 vkCreateWin32SurfaceKHR
功能,即使扩展已正确加载。
编辑:
在这里我尝试获取函数指针:
vkCreateWin32SurfaceKHR =
(PFN_vkCreateWin32SurfaceKHR)vkGetInstanceProcAddr(vulkanInstance.instance,
"vkCreateWin32SurfaceKHR");
您是否启用了适当的扩展程序,例如使用实例创建时的 const VK_KHR_WIN32_SURFACE_EXTENSION_NAME
?
另请注意,您不需要手动获取 vkCreateWin32SurfaceKHR
的函数指针,除非您将 VK_NO_PROTOTYPES
定义为核心的一部分。
如果您启用了扩展程序但仍未获得有效的函数指针,请检查您的驱动程序是否已正确安装,尤其是。没有注册的旧 ICD 可能会导致问题。 LunarG Vulkan SDK 包含一个名为 "via" 的工具(在 bin 文件夹中)来检查您的 Vulkan 安装。
如果您可以使用 C++ API 而不是 C 语言,则更简单的方法是通过 SDK 中附带的 vulkan.hpp
文件。
你可以#define VK_USE_PLATFORM_WIN32_KHR
并且vk::Instance
会有一个vk::Result createWin32SurfaceKHR(vk::Win32SurfaceCreateInfoKHR*, vk::AllocationCallbacks*, vk::SurfaceKHR*)
成员函数。这有助于减轻您自己获取函数指针的需要。
你 #include
你的源文件中有 vulkan_win32.h
header 吗?
PFN_vkCreateWin32SurfaceKHR
来自一个扩展,因此它没有在核心 vulkan headers 中定义。
关于这个...如果您在调用 vkCreateWin32SurfaceKHR 时收到错误,请确保您在 VkWin32SurfaceCreateInfoKHR 结构上定义了 sType...即使它是 VkWin32SurfaceCreateInfoKHR 结构,忘记 stype 也足以使其失败。
嘿,我正在尝试使用 Vulkan 创建一个 Windows Surface
但是不知何故 vkGetInstanceProcAddr
无法加载 vkCreateWin32SurfaceKHR
功能,即使扩展已正确加载。
编辑:
在这里我尝试获取函数指针:
vkCreateWin32SurfaceKHR =
(PFN_vkCreateWin32SurfaceKHR)vkGetInstanceProcAddr(vulkanInstance.instance,
"vkCreateWin32SurfaceKHR");
您是否启用了适当的扩展程序,例如使用实例创建时的 const VK_KHR_WIN32_SURFACE_EXTENSION_NAME
?
另请注意,您不需要手动获取 vkCreateWin32SurfaceKHR
的函数指针,除非您将 VK_NO_PROTOTYPES
定义为核心的一部分。
如果您启用了扩展程序但仍未获得有效的函数指针,请检查您的驱动程序是否已正确安装,尤其是。没有注册的旧 ICD 可能会导致问题。 LunarG Vulkan SDK 包含一个名为 "via" 的工具(在 bin 文件夹中)来检查您的 Vulkan 安装。
如果您可以使用 C++ API 而不是 C 语言,则更简单的方法是通过 SDK 中附带的 vulkan.hpp
文件。
你可以#define VK_USE_PLATFORM_WIN32_KHR
并且vk::Instance
会有一个vk::Result createWin32SurfaceKHR(vk::Win32SurfaceCreateInfoKHR*, vk::AllocationCallbacks*, vk::SurfaceKHR*)
成员函数。这有助于减轻您自己获取函数指针的需要。
你 #include
你的源文件中有 vulkan_win32.h
header 吗?
PFN_vkCreateWin32SurfaceKHR
来自一个扩展,因此它没有在核心 vulkan headers 中定义。
关于这个...如果您在调用 vkCreateWin32SurfaceKHR 时收到错误,请确保您在 VkWin32SurfaceCreateInfoKHR 结构上定义了 sType...即使它是 VkWin32SurfaceCreateInfoKHR 结构,忘记 stype 也足以使其失败。