相信不少朋友和我一样有这样的疑问
既然已经有广泛应用的OpenGL图形接口,为什么Khronos还要花费精力重新开发一套Vulkan图形API接口呢?
查询相关资料后,总结为一句话为了更高的性能、更低的驱动程序开销
。
对于许多图形开发者来说,OpenGL是一个非常熟悉和广泛使用的图形API接口。然而,随着计算机图形处理的需求越来越高,OpenGL也逐渐显露出一些不足,例如驱动程序开销较高、多线程支持不足等。为了解决这些问题,并更好地满足现代计算机图形处理的需求,新一代图形API接口Vulkan应运而生。
- Vulkan简介
- Vulkan的主要优势
- Vulkan对比OpenGL优势与不足
一、Vulkan简介
Vulkan
是由Khronos Group
开发维护的一套高性能、低开销、跨平台
的应用程序图形API接口
。最早于2015年的游戏开发者大会(GDC)上提出,随后在2016年2月16日
发布了1.0版本规范
和开源软件开发工具包(SDK)
。
Vulkan基于AMD开发的Mantle
构建 (Mantle是AMD开发的一种低级别的图形API接口
,旨在提供更好的性能、更低的CPU开销
),后来AMD将其Mantle API捐赠给Khronos,成为了底层图形API接口Vulkan
的基础。
Vulkan针对全平台即时3D图形程序(如电子游戏和交互媒体)而设计,设计目标是为现代GPU提供更直接的硬件访问接口
,并更好地利用多核CPU和现代GPU的强大计算能力,从而获得更高的渲染性能和更低的CPU开销(提供高性能和更均衡的CPU与GPU占用
)。
与传统的图形API接口如OpenGL不同,Vulkan基于命令缓冲区,通过发送命令缓冲区中的命令来控制GPU的渲染和计算操作
,提供了更详细的硬件控制
、更高效的内存管理
、更灵活的管线状态管理
和多线程支持
等优势,使得开发人员能够更好地控制图形渲染流程和优化应用程序性能
。
二、Vulkan的优势
Vulkan的主要优势包括:
更低的驱动程序开销
:
Vulkan具有更低的驱动程序开销,这意味着更少的CPU时间被用于图形调用,从而提高性能。更详细的硬件控制
:
Vulkan提供了对图形硬件的更详细控制,使得开发人员能够更好地优化应用程序性能。更高效的内存管理
:
Vulkan提供了更高效的内存管理机制,能够使图形开发者更加方便地控制图形渲染流程和优化内存使用。更灵活的管线状态管理
:
Vulkan提供了更加灵活的管线状态管理机制,使得开发人员能够更好地控制图形渲染流程。多线程支持
:
Vulkan在设计时考虑到了多线程,使得开发人员能够更容易地在多个CPU核心上分配工作。跨平台支持
:
Vulkan旨在成为一套跨平台的图形API,支持的操作系统包括 Windows、Linux、Android。另外,在苹果macOS、iOS操作系统,通过Molten开发的MoltenVK运行苹果Metal API提供Vulkan的支持。
三、Vulkan对比OpenGL
Vulkan和OpenGL都是由Khronos 开发的图形API。Vulkan作为新一代图形API,相比它的前身OpenGL,对图形硬件的抽象更为直接,具有更少的驱动开销、更高的性能,但随着这些优势而来的是更高的学习难度
。
3.1 Vulkan优势与不足
Vulkan优势:
- 有更低的驱动程序开销,这意味着更少的CPU时间被用于图形调用 ,有助于提高性能;
- 设计时考虑到了多线程,使得开发人员能够更容易地在多个CPU核心上分配工作。。
- 对图形硬件的更详细控制,使得开发人员能够更好地优化应用程序性能。
Vulkan不足:
- 相对较新,可能在某些平台或旧有硬件上缺乏支持(比如Android7.0以下版本硬件设备);
- 缺乏相对于OpenGL的学习教程和学习资源;
- 学习曲线较陡峭,对于初学者来说可能较难上手;
3.2 OpenGL优势与不足
OpenGL优势:
- 在许多平台上和旧有设备都有广泛的支持,比如Android7.0以下版本硬件设备;
- 有大量现有的教程和学习资源可供学习和参考;
- 学习曲线较为平缓,对于初学者来说更容易上手;
OpenGL不足:
- 驱动程序开销较高,特别是在高负载的情况下,可能会成为性能瓶颈;
- 缺乏对底层硬件的直接控制,可能影响性能优化;
- 多线程支持不足,难以充分利用多核CPU;
3.3 图形API的选择建议
Vulkan
被设计用于在现代多核CPU和GPU上实现更好的并行处理,同时还有更少的CPU开销和更好的可扩展性。此外,Vulkan还提供了更好的调试工具和更好的错误处理机制,这使得它更容易开发和调试。
OpenGL
仍然是一个非常流行的图形API接口,它已经存在了很长时间并且被广泛使用。它是一个跨平台的API,可以在多种操作系统和硬件上运行。OpenGL的主要优势是它的广泛支持和成熟的生态系统,同时也有很多开发者和工具支持。然而,OpenGL的主要缺点是它的性能受到限制,因为它是一个高级API,对硬件的控制较少,而且它的执行方式也不是非常高效。
总之,Vulkan和OpenGL都有各自的优缺点,它们在不同的场景下都有自己的用武之地。
对于需要高性能和更底层控制的应用程序开发,更建议选择Vulkan
;对于需要更成熟的生态系统支持,或面向设备为较旧的硬件设备(比如Android7.0以下版本硬件设备),或是图形学的初学者,OpenGL仍然是一个非常好的选择
。
参考
百科Vulkan:
https://zh.wikipedia.org/wiki/Vulkan
= THE END =
文章首发于公众号”CODING技术小馆“,如果文章对您有帮助,欢迎关注我的公众号。