Vulkan开发环境搭建for Windows

原文地址:http://blog.csdn.net/jinzhuojun/article/details/51417319 


首先需要有支持Vulkan的GPU和相应的driver。比如Nvidia,可以在https://developer.nvidia.com/vulkan-driver上查看自己的GPU是否支持Vulkan,如果支持可以下载相应驱动。注意目前Nvidia支持Vulkan的driver还是beta版的。打开NVIDIA控制面板可以看driver是否已安装成功:



然后就可以搭建开发环境了。以Windows为例,详细可以参见https://vulkan.lunarg.com/app/docs/v1.0.11.1/getting_started_windows。按步骤装完LunarG的Vulkan SDK后,如果要验证是否安装妥了,可以从开始菜单选Vulkan SDK <version> -> Demos -> vulkaninfo。如果能显示Vulkan的相关信息,那说明环境基本OK了。



在VulkanSDK的Demos目录下有三个demo程序。其中vulkaninfo用于从driver读取Vulkan信息,也就是上面运行的那个。另外两个demo,也就是cube和tri,是两个用Vulkan进行简单绘制的例子。通过这两个例子可以大体了解Vulkan的绘制流程。可以看到,与OpenGL相比,对于平台开发者来说,其实编程是更复杂了。但好处是对GPU更强的控制力。这意味着Vulkan是一把双刃剑。用得好可以得到更好的性能,更自由灵活的编程模型;用得不好可能还不如纯OpenGL。。。

VulkanSDK的Samples目录下带有sample可供学习API之用。VulkanSDK下Samples/samples_index.html中对这些sample的基本功能作了介绍。编译方法见https://github.com/LunarG/VulkanSampleshttps://vulkan.lunarg.com/app/docs/v1.0.11.1/vulkan_samples。编译前需要先安装cmake和Visual studio,它们都可以从官网下载(Visual studio: https://www.visualstudio.com/downloads/download-visual-studio-vs cmake:https://cmake.org/ )。另外为编译可能还需要安装Python(3.x版本)。它可以从https://www.python.org/downloads/下载。安装完后将python所在路径加入环境变量PATH,方便cmake找到。编译SDK中所有源码的基本流程一般都是先用cmake生成Visual studio编译所需文件。然后用Visual studio打开sln文件,编译即可。


除了这些SDK自带的sample,Nvidia也提供了一些关于Vulkan用法的sample:https://developer.nvidia.com/Vulkan。相对而言更复杂一些。


我们知道,Vulkan采用的是层次化的架构(https://vulkan.lunarg.com/app/docs/latest/LoaderAndLayerInterface)。应用不直接加载ICD,而是通过Loader。而Loader会通过配置信息加载相应的Layer。SDK中已经带有一些Layer(https://vulkan.lunarg.com/app/docs/latest/layers)。其中大多用于debug和validation,因为Vulkan倡导开发时enable这些调试用Layer,发布时去掉。要enable它们中的一个或多个,比较方便的方法是通过环境变量VK_INSTANCE_LAYERS和VK_DEVICE_LAYERS。比如:


这样dump.txt中就记录下了该程序所有Vulkan接口调用信息,方便后面的分析。


SDK中还包含了一些实用工具,其中一些包含源代码,这样我们可以修改和调试。

* vktracevkreplay可以对Vulkan程序生成trace文件,并对它进行回放。支持本地和远程两种模式。
* spirv-tools是关于SPIR-V的工具集,我们知道和OpenGL用GLSL创建shader不一样,Vulkan用的是SPIR-V。与前者不同的是,它是一种binary格式。一方面为了兼容之前的GLSL,另一方面为了便于开发,需要工具来进行GLSL和SPIR-V的转化及SPIR-V的验证。
    1. glslangValidator:用于验证GLSL shader,同时也可以将 GLSL转化为SPIR-V。
    2. spirv-dis用于将SPIR-V shader反汇编成可读格式。而spirv-as主要用于将修改过的前者的输出汇编成SPIR-V。这两者结合其实是提供了一种编辑二进制SPIR-V的方法。
    3. spirv-remap: 用于SPIR-V的压缩,节省空间。

除此之外,SDK还会安装RenderDoc。它是一个图形调试器,通用于Vulkan,OpenGL和D3D。和前面的validation layer不同,它主要不是用来验证Vulkan调用本身正确性的,因此它假设Vulkan调用都是正确的。它的功能主要是为了功能性的调试和性能调优。用法上,打开RenderDoc后,点击File->Capture log,然后填写要track的程序后,点击capture开始。在运行过程中按F12或者PrtScrn就会截下当前的帧,用作分析。


关于RenderDoc详细文档可以参见自带的Documentation(http://docs.renderdoc.org/html/da00c42d-49ad-4a0a-b7e3-972dd6800960.htm)和github(https://github.com/baldurk/renderdoc)。



发布了211 篇原创文章 · 获赞 438 · 访问量 148万+

猜你喜欢

转载自blog.csdn.net/ariesjzj/article/details/51417319