Vulkan介绍
Vulkan是由Khronos组织开发的一种高级图形API。其他图形API(像OpenGL和Direct3D)需要驱动去将上层API翻译成适合硬件执行的指令。这些图形API是为了使开发者不需要关注复杂的图形硬件细节。
随着那些较老的图形API继续发展,它们会慢慢地将越来越多的底层硬件功能直接暴露给程序员。
程序员被要求访问底层硬件,权衡那些具有较高开销和较低性能的功能的便利性和安全性。
Vulkan的设计初衷是为了避免在上层API出现更高的开销。
因此,在构建Vulkan应用程序时,Vulkan程序员需要处理更多的细节。
但是这使得程序员能够更有效地管理应用程序资源和GPU硬件。
这是因为程序员对应用程序的资源使用模式有了更多的了解。
此外,Vulkan还希望成为一个比其他图形API更跨平台的API,它不仅针对高端系统,还针对低端移动设备。
关于本教程
目的
本教程的目的是帮助您完成创建一个简单的Vulkan应用程序的过程,并在此过程中学习Vulkan的基础知识。
本教程与由LunarG开发的示例进展的代码同步。
当您在本教程中工作时,您会接触到这些示例程序中的实际代码,它们说明了开发一个简单的Vulkan应用程序所需的每一个步骤。
在本教程的最后,您将有一个完整的Vulkan程序,您可以将它用作学习更多关于Vulkan的起点。
为了了解这个样例进展是什么样子的,请访问:
LunarG Samples Progression Index.
如何使用示例教程
当与示例进展中的代码并排使用时,本教程是最有效的。
我们建议您设置您的开发环境,以便您能够下载和构建
LunarG Vulkan Samples GitHub repository.
请按照该代码仓库中置顶的自述文件中的说明来安装必要的工具和包来构建示例程序。
这些示例程序可以在代码仓库的“API-Samples”文件夹中找到的。
一旦您已经构建并运行了示例程序,您就可以继续学习本教程了。
在你查看示例代码时,如果能够方便得参考vulkan.h
会很有用。
这个头文件可以在示例代码仓库中找到, 在 include
文件夹中。
Vulkan规范文档是了解Vulkan的宝贵信息来源。
你可以在这个网址找到规范文档:
LunarG LunarXchange website
或者 Khronos Vulkan Registry.
尽管在您工作的过程中,并没有严格要求您参考规范,但是您可能会发现该规范对于加深对Vulkan的理解是有用的。
示例代码讲解
通过只显示与该主题相关的代码,实现了对特定主题的关注。
与之前讨论的主题相关的代码通常被组织成从主程序调用的函数,使得
“旧的”主题不会妨碍与当前主题相关的代码。
您总是可以回到这些函数来增加您对以前的主题的理解。
一部分专注于某一特定主题的示例程序,在涉及到“旧”主题的函数之间进行了注释,如下:
init_instance(info, sample_title);
init_enumerate_device(info);
init_window_size(info, 500, 500);
init_connection(info);
init_window(info);
init_swapchain_extension(info);
init_device(info);
...
/* VULKAN_KEY_START */
... code of interest
/* VULKAN_KEY_END */
...
destroy_device(info);
destroy_window(info);
destroy_instance(info);
在源文件中寻找这些注释,以快速找到与正在讨论的主题相关的代码。
© Copyright 2016 LunarG, Inc