首页 > 其他分享 >OpenGL不够用?为何还要开发Vulkan?

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

时间:2023-06-30 13:25:32浏览次数:47  
标签:OpenGL 硬件 图形 API 不够 Vulkan CPU

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

标签:OpenGL,硬件,图形,API,不够,Vulkan,CPU
From: https://www.cnblogs.com/xiaxveliang/p/17516453.html

相关文章

  • OpenGL 环境搭建(VS2019)
    1.GLFW下载:https://sourceforge.net/projects/glfw/官网:https://www.glfw.org/download.html(可能登录不了)下载后解压glfw-3.3.8.bin.WIN32.zip将include和lib-vc2019配置到VS的工程内需要的lib:openGL32.lib ---不要忘了glfw3.lib测试代码:#include<GLFW/glfw3.......
  • OpenGL 初识
    1.能干什么 2.各种库关系  ......
  • 【OpenGL修行】点线面模式设置
    文章目录点点的大小切换线线的宽窄设置虚线绘制多边形多边形正反绘制&反转多边形表面剔除多边形表面镂空通过初始化数组设置镂空样式通过读取bmp文件设置镂空样式点点的大小切换通过glPointSize()函数即可实现点的大小控制,我画了两个大小不同的点,还是挺明显的。voiddisplay1(){......
  • OpenGL ES 和 OpenGL 版本关系
    本文记录了OpenGL和OpenGLES的版本关系。 ES2.0不向后兼容(notbackwardcompatible),也就是不兼容老版本。ES2.0已经没有固定管线了。ES3.0兼容ES2.0。ES不支持Geometry和Tessellation着色器,但3.0支持feedback模式。ES不支持Antialiasedline. OpenGL版本......
  • [OpenGL]环境搭建以及OpenGL初识
    想往游戏行业发展的话,经常被提及到的就是OpenGL和DirectX,这两者听起来感觉是一门挺高深的技术,今天我也开始摸索学习OpenGL,那么OpenGL到底是什么?它和DirectX有什么区别和联系?OpenGL初识OpenGL只是一套图形函数库DirectX包含图形、声音、输入、网络等模块。但就图形而论,DirectX的图形......
  • Python+OpenGL使用Cohen-Sutherland算法实现直线裁剪
    问题描述:编写Python程序,使用OpenGL实现用于直线裁剪的Cohen-Sutherland算法。运行程序,绘制一个矩形表示裁剪窗口,然后通过鼠标单击和移动来绘制直线,鼠标抬起时对刚刚绘制的直线进行裁剪,显示最终落在裁剪窗口中的部分。关于Cohen-Sutherland算法请自行查阅资料。准备工作:安装和配置Py......
  • 直播系统搭建,编辑下拉框、日期时,会层级不够有遮蒙层问题
    直播系统搭建,编辑下拉框、日期时,会层级不够有遮蒙层问题加样式代码如下(示例):  下拉框的样式: .vxe-select--panel{  z-index:9997!important; }​日期的样式: .vxe-input--panel.type--date,.vxe-input--panel.type--month,.vxe-input--panel.type--week,.vx......
  • I/O密集型应用模型 数据密集型应用 Node对CPU密集型的场景不够友好
    语雀https://help.aliyun.com/document_detail/193189.html更新时间:2022-11-2818:16产品详情相关技术圈 我的收藏本文介绍如何通过函数计算,解决语雀CPU密集场景下,进程被阻塞等问题。客户介绍语雀是一个专业的云端知识库,用于团队的文档协作。现在已经是阿里巴......
  • 数据不够怎么训练深度学习模型?不妨试试迁移学习 ——重用神经网络的结构2
    数据不够怎么训练深度学习模型?不妨试试迁移学习本质就是这个图!pretrainedmodel就是你截取的部分神经网络模型(迁移学习),而nanonet就是你自己加入的网络层。随着深度学习技术在机器翻译、策略游戏和自动驾驶等领域的广泛应用和流行,阻碍该技术进一步推广的一个普遍性难题也日渐凸显:训......
  • Ubantu使用n升级Node提示权限不够
    升级Node时,常见以下问题:使用nstable时提示权限不够(base)zibuyu@ubuntu:~/Desktop/luffy$nstableinstalling:node-v18.16.0mkdir:/usr/local/n/versions/node/18.16.0mkdir:无法创建目录“/usr/local/n”:权限不够而使用sudonstable时又提示找不到命令......