[英]Cannot use vkCreateWin32SurfaceKHR to create vulkan surface
[英]Vulkan vkCreateWin32SurfaceKHR fails to load
嘿我正在嘗試用Vulkan創建一個Windows Surface,但不知何故vkGetInstanceProcAddr
無法加載vkCreateWin32SurfaceKHR
函數,即使擴展名已正確加載。
編輯:這里我嘗試獲取函數指針: vkCreateWin32SurfaceKHR = (PFN_vkCreateWin32SurfaceKHR)vkGetInstanceProcAddr(vulkanInstance.instance, "vkCreateWin32SurfaceKHR");
您是否在實例創建時使用例如const VK_KHR_WIN32_SURFACE_EXTENSION_NAME
啟用了相應的擴展?
另請注意,除非將VK_NO_PROTOTYPES
定義為核心的一部分,否則無需手動獲取vkCreateWin32SurfaceKHR
的函數指針。
如果您已啟用擴展但仍未獲得有效的功能指針,請檢查您的驅動程序是否已正確安裝,尤其是 沒有舊的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
頭嗎?
PFN_vkCreateWin32SurfaceKHR
來自擴展,因此未在核心vulkan標頭中定義。
在此...如果您在調用vkCreateWin32SurfaceKHR時收到錯誤,請確保在VkWin32SurfaceCreateInfoKHR結構中定義了sType ...即使它是VkWin32SurfaceCreateInfoKHR結構,忘記stype也足以使其失敗。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.