VM虚拟机下安装vulkan的踩坑

0、序

最近终于把games101差不多追完了,打算接下来学一下图形学的API,参考了网上的一些资料,比较了一下directX系列,opengl,vulkan,决定学习vulkan(立下自己不轻易狗带的flag)。

自己比较喜欢在linux环境下写代码,决定在VM虚拟机中的Ubuntu18.04中搭建vulkan环境。

1、虚拟机下的踩坑

结论:虚拟机下安装vulkan环境失败

  • 在官网上下载了SDK后,运行vulkaninfo命令总是失败,报错如下

vulkaninfo.h 248 vkEnumeratePhysicalDevice: failed with ERROR_INITIALIZATION_FAILED

  • Google了一下并没有找到合适的解答,寻思了一下,这报错像是在找GPU的时候失败了。因为主机中是nvidia的GPU,我尝试在虚拟机中搜索了nvidia_icd,果然无果,看来是虚拟机中没有nvidia GPU的icd。
  • 接下来我又尝试查看了一下虚拟机中的显卡情况
$ lspci | grep -i vga
00:0f.0 VGA compatible controller: VMware SVGA II Adapter

阿勒勒,nvidia的显卡呢?

  • 又Google了一下,大概解释是,虚拟机并没有权限直接使用GPU,而是VM虚拟一个GPU出来,比如上面的 SVGA II,然后再间接利用主机的GPU实现图形化加速,因此在Ubuntu看来,机器上只有这个SVGA II的GPU。(http://vmware-svga.sourceforge.net/index.old.html)。
  • 下面是来自vulkan官网的一个结构图
    在这里插入图片描述
  • 按照我的理解,下载的SDK,主要是loader和layer部分的代码,而ICD则由GPU厂商提供(比如在linux中,nvidia的GPU对应的icd的json文件为nvidia_icd)。
  • 现在Ubuntu中的GPU为SVGA II的GPU,那么就需要VMware提供相应的icd,搜索了一下,目前VMware虚拟的GPU貌似并不支持这一点,这样就没办法在VM虚拟机中搭建vulkan环境。

2. windows下的安装

于是我回到win10的主机环境,安装了官网提供的windows的SDK,这次在命令行输入vkcube检测:
在这里插入图片描述
哈哈,不愧是windows,瞬间成功!

3. vs2019中的环境配置

最后在vs2019中配置头文件和库的搜索路径,使得编译的时候能够找到需要的文件。

最简单的可以参考官网的windows安装文档,把SDK中的template复制到vs的C++ template中,每次要创建一个vulkan项目的时候就打开这个模板就好了。
在这里插入图片描述
不过我更希望自己来配置路径,这样出了问题或者换了一些库自己能更好出来。

因为接下来打算跟着这个教程学习,所以按照这上面的教程配置了路径,默认的模板中(或者说官方的SDK)使用的是SDL库来创建窗口,而教程中使用GLFW库来创建窗口。

具体来说,在VS2019中要配置好路径需要设置3个变量

  • 属性页/C++/常规/附加包含目录(指定头文件搜索路径)
  • 属性页/链接器/常规/附件库目录(指定链接时库文件的搜索路径)
  • 属性页/链接器/输入/附加依赖项(指定需要连接的动态库)

百度了一下,windows下动态库文件有两种,一种是.lib, 一种是.dll,.lib类似于头文件,记录了.dll的各种符号等等,不包含实际的代码。.dll则对应linux下的.so。

最后,把配置好的vulkan编程环境导出为模板即可。以后便可以直接用该模版而不需要重新设置路径。
在这里插入图片描述
如果要删除自定义的模板,需要删除两个地方对应的zip文件

usr家目录\Visual Studio 2019\My Exported Templates
usr家目录\Visual Studio 2019\Templates\ProjectTemplates

OK,整个环境配置完成!

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值