Vulkan 简介
Vulkan是一个免费开放的、跨平台的、底层的图形API,在一定程度上比AMD Mantle、微软DirectX 12、苹果Metal更值得开发者关注。
Vulkan的最大任务不是竞争DirectX,而是取代OpenGL,所以重点要看和后者的对比。
在高分辨率、高画质、需要GPU发挥的时候,Vulkan、OpenGL的速度基本差不多,但是随着分辨率的降低,CPU越来越重要,Vulkan逐渐体现了出来,尤其是看看GTX 980 Ti,最多可以领先OpenGL 33%之多!
Vulkan 是和 DirectX 12 类似的跨平台底层 API,Vulkan 和 DirectX 12 都是基于 AMD 开源的 Mantle API,事实上两者的早期文档就是将 AMD 的 Mantle 文档修改一下名字。
自1992年问世以来,OpenGL已经成为了PC游戏迄今为止最常用的图形API之一。作为一种多语言、跨平台的应用程序编程接口,它已经被广泛用于GPU的交互和硬件加速。
使用至今,人们当然也发现了它的缺点。因为源代码是90年代的产物,对于目前在市面上大行其道的多核CPU(GPU)利用效率不佳,往往只能提供有限的单线程负载,所以帧率、能耗都难取得突破。
作为OpenGL官方组织,Khronos在今年三月份推出了新一代API规范Vulkan(昵称“火山”或者“福尔康”),同样采用跨平台设计,但最重要的贡献是大幅降低绘制命令开销(draw call overhead),改善多线程性能,渲染性能更快,背后的理念和DX12和Mantle都是一致的。
另外,Vulkan还会统一桌面的OpenGL和移动平台的OpenGL ES,而且谷歌已经明确了Android将会支持Vulkan。
Vulkan在改善功耗、多核优化提升绘图调用上之于前辈OpenGL有着非常明显的优势。
Khronos组织正式发布了Vulkan 1.0标准规范,我们终于有了一个开放开源的、跨平台的、底层的图形和计算API。
Vulkan在很大程度上汲取了AMD Mantle的灵感,但是进行了大幅度的扩展和增强,构成了一个完善的开发体系,功能和性能都十分丰富,拥有最新图形技术、通用目的计算、预编译着色器、多核心多线程高效率、底层驱动过载、横跨桌面/移动/主机/嵌入式、底层GPU硬件控制、精炼API。
硬件方面,凡是支持OpenGL ES 3.1/4.x的都可以支持,而在操作系统方面,它支持Android(版本待定)、Windows XP/7/8/10、SteamOS、Ubuntu、Red Hat、Tizen等等,但是不支持iOS、OS X——苹果一度参与过Vulkan的开发,但最终单独搞了一套Metal,还是关起门来自己玩。
The Khronos Group --vulkan 开源集
https://github.com/KhronosGroup
Vulkan API
Android 7.0 将一项新的 3D 渲染 API Vulkan™ 集成到平台中。就像 OpenGL™ ES 一样,Vulkan 是 3D 图形和渲染的一项开放标准,由 Khronos Group 维护。
Vulkan 是完全从零开始设计,以最小化驱动器中的 CPU 开销,并能让您的应用更直接地控制 GPU 操作。Vulkan 还允许多个线程同时执行工作,如命令缓冲区构建,以获得更好的并行化。
Vulkan 开发工具和库都已卷入 Android 7.0DK。它们包括:
- 标头
- 验证层(调试库)
- SPIR-V 着色程序编译器
- SPIR-V 运行时着色器编译库
Vulkan 仅适用于已启用 Vulkan 硬件的设备上的应用,如 Nexus 5X、Nexus 6P 和 Nexus Player。我们正在与合作伙伴密切合作,以尽快使 Vulkan 能面向更多的设备。
如需了解详细信息,请参阅 API 文档。