简体   繁体   English

Vulkan vkCreateWin32SurfaceKHR无法加载

[英]Vulkan vkCreateWin32SurfaceKHR fails to load

Hey I'm trying to create a Windows Surface with Vulkan but the somehow vkGetInstanceProcAddr fails to load the vkCreateWin32SurfaceKHR function even though the extension is loaded properly. 嘿我正在尝试用Vulkan创建一个Windows Surface,但不知何故vkGetInstanceProcAddr无法加载vkCreateWin32SurfaceKHR函数,即使扩展名已正确加载。

Edit: here I try to get the function pointer: vkCreateWin32SurfaceKHR = (PFN_vkCreateWin32SurfaceKHR)vkGetInstanceProcAddr(vulkanInstance.instance, "vkCreateWin32SurfaceKHR"); 编辑:这里我尝试获取函数指针: vkCreateWin32SurfaceKHR = (PFN_vkCreateWin32SurfaceKHR)vkGetInstanceProcAddr(vulkanInstance.instance, "vkCreateWin32SurfaceKHR");

Did you enable the appropriate extension using eg the const VK_KHR_WIN32_SURFACE_EXTENSION_NAME at instance creation time? 您是否在实例创建时使用例如const VK_KHR_WIN32_SURFACE_EXTENSION_NAME启用了相应的扩展?

Also note that you don't need to manually get the function pointer for vkCreateWin32SurfaceKHR unless you define VK_NO_PROTOTYPES as it's part of the core. 另请注意,除非将VK_NO_PROTOTYPES定义为核心的一部分,否则无需手动获取vkCreateWin32SurfaceKHR的函数指针。

If you have enabled the extension and still don't get a valid function pointer, check if your drivers are properly installed, esp. 如果您已启用扩展但仍未获得有效的功能指针,请检查您的驱动程序是否已正确安装,尤其是 that there is no old ICD registered that may cause problems. 没有旧的ICD注册可能会导致问题。 The LunarG Vulkan SDK contains a tool called "via" (in the bin folder) to check your Vulkan installation. LunarG Vulkan SDK包含一个名为“via”的工具(在bin文件夹中)来检查您的Vulkan安装。

In case you're okay using the C++ API instead of the C one, an easier way to do this is via the vulkan.hpp file that ships in the SDK. 如果您可以使用C ++ API而不是C语言,那么更简单的方法是通过SDK中提供的vulkan.hpp文件。

You can #define VK_USE_PLATFORM_WIN32_KHR and vk::Instance will have a vk::Result createWin32SurfaceKHR(vk::Win32SurfaceCreateInfoKHR*, vk::AllocationCallbacks*, vk::SurfaceKHR*) member function. 你可以#define VK_USE_PLATFORM_WIN32_KHRvk::Instance将有一个vk::Result createWin32SurfaceKHR(vk::Win32SurfaceCreateInfoKHR*, vk::AllocationCallbacks*, vk::SurfaceKHR*)成员函数。 This helps alleviate the need for grabbing function pointers yourself. 这有助于减轻自己抓取函数指针的需要。

Did you #include the vulkan_win32.h header in your source file? 你在源文件中#include vulkan_win32.h头吗?

PFN_vkCreateWin32SurfaceKHR comes from an extension and so it is not defined in the core vulkan headers. PFN_vkCreateWin32SurfaceKHR来自扩展,因此未在核心vulkan标头中定义。

在此...如果您在调用vkCreateWin32SurfaceKHR时收到错误,请确保在VkWin32SurfaceCreateInfoKHR结构中定义了sType ...即使它是VkWin32SurfaceCreateInfoKHR结构,忘记stype也足以使其失败。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM