Vulkan简介
什么是Vulkan
Vulkan是一个低开销、跨平台的适用于高性能的2D、3D图形与计算的API,最早由科纳斯(Khronos Group)在2015年游戏开发者大会(GDC)上发表
起初Vulkan API被称为“次时代OpenGL行动”(next generation OpenGL initiative)或“glNext”,在正式官宣为Vulkan后这些名称就被弃用
目前Vulkan最新Release为1.3的版本,Android版本与Vulkan API版本的对应关系如下
当前市场上支持Vulkan的应用也越来越多,PC端产品包括Dota2、极品飞车等,移动端产品包括王者荣耀、原神等
Vulkan的特性
Vulkan作为新一代图形API,满足如下特性:
- Explicit(明确、透明): GPU driver做更少的事情,把控制权移交给上层开发者
- Streamlined(精简): 更快的性能、更低的开销、更少的延迟
- Portable(可移植): 支持云、桌面、控制台、移动端和嵌入式等
- Extensible(可扩展): 支持新功能的扩展、推动行业技术进步
Vulkan对比OpenGL有哪些优势
Vulkan对比OpenGL的优势主要体现在性能和跨平台这两个方面
性能
1. 更显式的渲染流程控制
在OpenGL中,驱动程序会帮助开发者做很多事情,包括API验证、状态管理、内存控制等
而Vulkan提供一个更精简的驱动层,应用层获得更多控制权则能更精细化的控制渲染流程;
比如只在开发阶段添加验证层,发布阶段关闭(听说仅这一项操作性能就能显著提升9倍)
2. 天然的CPU多线程支持
在OpenGL中,所有的渲染操作都需要在绑定Context的线程中执行,从整个应用的负载来看是可能存在较大的资源浪费
而Vulkan中引入了Command Buffer的概念,每个线程都能向Command Buffer中提交渲染指令
通过Command Buffer充分发挥现代CPU多核多线程的优势
跨平台
在2018年的WWDC上,Apple宣布弃用OpenGL、ES和OpenCL
而Vulkan的开发者来自图形领域的各行各业,包括:GPU厂商、系统厂商、游戏引擎厂商等,天然具有跨平台属性
Apple虽然没有在官方层面直接支持Vulkan,但是可以通过MoltenVK在iOS和Mac平台运行Vulkan
(MoltenVK is a runtime library that maps Vulkan to Apple's Metal graphics framework on iOS and macOS. With MoltenVK, you get the performance benefits and added debugging and performance tuning capabilities of the Metal framework on iOS and macOS, without having to rewrite your app that already uses Vulkan, the next-generation open-standard API for high performance GPU acceleration)
考虑多端开发的时候,Vulkan跨平台的优势就比较明显了
新的一年里,你会学习Vulkan吗?
参考
1.【Vulkan-专为Android打造的高性能3D图像API】
https://toutiao.io/posts/4tgbqt/preview
2.【Nvidia Developer Vulkan】
https://developer.nvidia.com/vulkan
3.【Vulkan简介】
https://zhuanlan.zhihu.com/p/165141740
~~END~~
相关文章
- 在 Go 里用 CGO?这 7 个问题你要关注!
- 9款优秀的去中心化通讯软件 Matrix 的客户端
- 求职数据分析,项目经验该怎么写
- 在OKR中,我看到了数据驱动业务的未来
- 火山引擎云原生大数据在金融行业的实践
- OpenHarmony富设备移植指南(二)—从postmarketOS获取移植资源
- 《数据成熟度指数》报告:64%的企业领袖认为大多数员工“不懂数据”
- OpenHarmony 小型系统兼容性测试指南
- 肯睿中国(Cloudera):2023年企业数字战略三大趋势预测
- 适用于 Linux 的十大命令行游戏
- GNOME 截图工具的新旧截图方式
- System76 即将推出的 COSMIC 桌面正在酝酿大变化
- 2GB 内存 8GB 存储即可流畅运行,Windows 11 极致精简版系统 Tiny11 发布
- 迎接 ecode:一个即将推出的具有全新图形用户界面框架的现代、轻量级代码编辑器
- loongarch架构介绍(三)—地址翻译
- Go 语言怎么解决编译器错误“err is shadowed during return”?
- 敏捷:可能被开发人员遗忘的部分
- Denodo预测2023年数据管理和分析的未来
- 利用数据推动可持续发展
- 在 Vue3 中实现 React 原生 Hooks(useState、useEffect),深入理解 React Hooks 的