开始旅程
Vulkan是用来构建游戏的图形API,我们将逐步进入Vulkan API的复杂世界来解释它们是什么。
事不宜迟,请跟随我的脚步来学习Vulkan吧!
什么是API?
在讨论vulkan之前 ,我们先了解一下 API。API 代表应用程序接口,是一组能使不同应用程序之间进行互通的程序代码。
本质上,调用 API 代表软件发送请求。例如,天气预报系统包含每天的天气数据信息,您手机上的天气预报程序通过 API 与该系统“对话”,并在您的手机上显示最新的天气信息。
什么是Vulkan?
它是一个低开销、接近底层硬件的 API,适用于 3D 图形和计算应用程序。Vulkan 基本上是 OpenGL 的后续版本,它最初被称为“下一代 OpenGL 计划”。Vulkan 理论上比其他 GPU API 更具优势,具备跨平台支持、更好的支持多线程处理器、更低的 CPU 负载以及一定程度的操作系统无感知能力。它还应该使驱动程序开发更容易,并允许预编译驱动程序,包括使用以各种语言编写的着色器。'
Vulkan 是一种专为实时 3D 图形应用程序(例如游戏)而设计的 API。它能够与计算机的 GPU 进行互通,并告诉 GPU 需要渲染什么样的游戏画面。实际的交互过程比这复杂的多,但这就是基本的交互过程。
游戏在不同的平台可以使用不同的图形 API,如Windows的DirectX, MacOS的Metal。而 Vulkan 最有优势的一面是它是开源和跨平台的,理论上应该可以跨多个操作系统工作,包括 Android、SteamOS、MacOS、Linux 和 Windows 7 到Windows 11。高效的图形 API 可以带来卓越的性能, Vulkan 创建的出发点就是要确保其较低的 CPU 占用率,为其他工作负载留出更多空间。
Vulkan 跨平台的特点使开发人员可以更轻松地创建跨平台访问的游戏,使得我们的游戏玩家可以在更多的地方玩游戏,这对于各方来说都是理想的选择。
Vulkan 是如何诞生的?
Vulkan 最初由 Khronos Group 于 2015 年 3 月宣布,暂定发布日期为 2015 年底。Khronos 是一个非盈利行业联盟,由图形行业的知名厂商在 15 年前创立,包括 ATI(已被 AMD 收购)、Nvidia、Intel、Silicon Graphics、Discrete 和 Sun Microsystems。即使您没有听说过 Khronos,您也可能听说过他们的一些标准,例如:OpenGL、OpenGL ES、WebGL、OpenCL、SPIR、SYCL、WebCL、OpenVX、EGL、OpenMAX、OpenVG、OpenSL ES、 StreamInput、COLLADA 和 glTF。
与 opengl 不同的是,Vulkan 是从头开始设计的,它可以在多种平台上运行,从手机、平板电脑到游戏机、高端台式机。API 的底层设计是分层的,或者说是模块化的,因此它可以为代码校验、调试和分析创建通用且可扩展的架构,而不会影响性能。Krhonos 声称分层方法将具备更大的灵活性,促进跨供应商的 GPU 工具创新,并为复杂的游戏引擎提供更直接的 GPU 控制。
理论上,Vulkan 可用于并行计算硬件、控制数成千上万个 GPU 核心、微型可穿戴设备和玩具无人机、3D 打印机、汽车、VR 套件以及几乎任何其他内部具有 GPU 的设备。
有关更多详细信息,建议您查看官方 Vulkan 概述。
Vulkan 和 OpenGL
一些人可能知道 OpenGL,它也是一个 3D 图形 API。Vulkan 并不是 OpenGL 的直接替代品,而是一个允许对 GPU 进行更细化控制的显示 API。
我们对比一下 Vulkan 和 OpenGL 之间的区别。Khronos 给出了一个简单的对比图说明:
在应用程序中使用 Vulkan 需要投入了更多的精力处理细节, 可能并非每个开发人员都愿意这样做,但如果开发人员正确做了这些工作,将会发现有很多功能和性能的提升。