簡體   English   中英

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啟用了相應的擴展?

另請注意,除非將VK_NO_PROTOTYPES定義為核心的一部分,否則無需手動獲取vkCreateWin32SurfaceKHR的函數指針。

如果您已啟用擴展但仍未獲得有效的功能指針,請檢查您的驅動程序是否已正確安裝,尤其是 沒有舊的ICD注冊可能會導致問題。 LunarG Vulkan SDK包含一個名為“via”的工具(在bin文件夾中)來檢查您的Vulkan安裝。

如果您可以使用C ++ API而不是C語言,那么更簡單的方法是通過SDK中提供的vulkan.hpp文件。

你可以#define VK_USE_PLATFORM_WIN32_KHRvk::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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM