连接Vulkan Loader库

连接Vulkan Loader库
显卡厂商通过显卡驱动提供对Vulkan的支持。任何显卡厂商都可以在它们选择的任何动态链接库中实现该支持,而且能够通过更新驱动程序更改该支持。这也是Vulkan Loader库会随显卡驱动程序一起被安装的原因。

当然,我们也可以单独将Vulkan Loader库安装到SDK的安装文件夹中。不论被安装的驱动程序是哪个厂商的或是哪个版本的,Vulkan Loader库都能够使开发者访问Vulkan API的入口点(在Windows中通过库文件vulkan-1.dll,在Linux中通过库文件libvulkan.so.1)。

Vulkan Loader库负责将Vulkan调用语句,传输给合适的显卡驱动程序。在一台计算机中,可能有多个硬件组件都支持Vulkan,但在使用Vulkan Loader库的情况下,我们就不需要知道具体应该使用哪个驱动程序,也不需要知道为了使用Vulkan需要连接具体哪个软件库。作为开发者,我们需要知道的仅是Vulkan动态链接库的名称:在Windows中为vulkan-1.dll,在Linux中为libvulkan.so.1。当我们想要在应用程序中使用Vulkan时,只需要使用应用程序的源代码与Vulkan Loader库相联(加载Vulkan Loader库)。

TIP在Windows中,Vulkan Loader库文件的名称为vulkan-1.dll。在Linux中,Vulkan Loader库文件的名称为libvulkan.so.1

具体处理过程
在Windows操作系统中:
(1)在应用程序的源代码中创建一个HMODULE类型的变量,将之命名为vulkan_library。
(2)调用LoadLibrary(”vulkan-1.dll”)函数,并将该操作的结果存储在vulkan_library变量中。
(3)通过查明vulkan_library变量的值不是nullptr(空值常量),确认该操作已经成功完成。

在Linux操作系统中:
(1)在应用程序的源代码中创建一个void*类型的变量,将之命名为vulkan_library。
(2)调用dlopen(”libvulkan.so.1″,RTLD_NOW)函数,并将该操作的结果存储在vulkan_library变量中。
(3)通过查明vulkan_library变量的值不是nullptr,确认该操作已经成功完成。

具体运行情况
LoadLibrary()是Windows提供的函数,dlopen()是Linux提供的函数。它们都能将指定的动态链接库加载(打开)到编写的应用程序所用的内存区域中。这样就可以加载指定动态链接库中的函数(通过获取函数的指针),从而在编写的应用程序中使用这些函数。

当然,我们最感兴趣的是使用Vulkan中的函数,要使用这些函数,在Windows中可加载vulkan-1.dll动态链接库,在Linux中可加载libvulkan.so.1动态链接库。
连接Vulkan Loader库
成功加载Vulkan Loader库后,就可以加载一个Vulkan的专有函数,以便获取其他Vulkan API函数的地址。

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!

 

Vulkan实战