Vulkan Cookbook 第一章 3 连接Vulkan Loader库

连接Vulkan Loader库

译者注:示例代码点击此处

对Vulkan API的支持由图形硬件供应商实现,并通过图形驱动程序提供。每个供应商都可以在他们选择的任何动态库中实现它,甚至可以通过驱动程序更新来更改它。
这就是为什么和驱动程序一起安装Vulkan Loader的原因。我们也可以从安装SDK的文件夹中安装它。它允许开发人员通过Windows操作系统上的vulkan-1.dll库或Linux操作系统上的libvulkan.so.1库访问Vulkan API入口点。
Vulkan Loader负责将Vulkan API调用传输到适当的图形驱动程序。在一台计算机上可能有很多的硬件组件支持Vulkan,但是使用Vulkan Loader我们不需要知道应该使用哪个驱动程序,或者我们应该连接哪个库以便能够使用Vulkan。开发人员只需要知道Vulkan库的名称:Windows上的vulkan-1.dll或Linux上的libvulkan.so.1。当我们想在我们的应用程序中使用Vulkan时,我们只需要在我们的代码中连接它(加载它)。
提示:在Windows操作系统上,Vulkan Loader库名为vulkan-1.dll。 在Linux OS上,Vulkan Loader库名为libvulkan.so.1。

怎么做...

在Windows操作系统上:
1.准备一个名为vulkan_library的HMODULE类型的变量。
2.调用LoadLibrary("vulkan-1.dll")并将此操作的结果存储在vulkan_library变量中。
3.通过检查vulkan_library变量的值是否与nullptr不同,确认此操作已成功。

在Liunx操作系统上:
1.准备一个名为vulkan_library的void*类型的变量。
2.调用dloepn("libvulkan.so.1",RTLD_NOW)并将此操作的结果存储在vulkan_library变量中。
3.通过检查vulkan_library变量的值是否与nullptr不同,确认此操作已成功。

这个怎么运作...

LoadLibrary()是Windows操作系统上可用的功能。 dlopen()是Linux操作系统上可用的函数。 它们都将指定的动态链接库加载(打开)到我们应用程序的内存空间中。 这样我们就可以加载(获取指针)从给定库实现和导出的函数,并在我们的应用程序中使用它们。
如下所示:

#if defined _WIN32
vulkan_library = LoadLibrary( "vulkan-1.dll" );
#elif defined __linux
vulkan_library = dlopen( "libvulkan.so.1", RTLD_NOW ); #endif
if( vulkan_library == nullptr ) {
std::cout << "Could not connect with a Vulkan Runtime library." << std::endl; return false;
}
return true;

成功调用后,我们可以加载使用Vulkan获取所有API的函数地址了。

 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值