OpenGL不够用?为何还要开发Vulkan?

相信不少朋友和我一样有这样的疑问既然已经有广泛应用的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技术小馆“,如果文章对您有帮助,欢迎关注我的公众号。
欢迎关注我的公众号

posted @ 2023-06-30 13:10  bjxiaxueliang  阅读(3222)  评论(0编辑  收藏  举报