vulkan是什么

vulkan是一款跨平台的2d和3d图形应用程序接口,2015年由khronos在gdc发布 。本质上是amdmantle的后续版本,继承了amdmantle强大的低开销架构,让开发者可以方便全面的获得gpu和多核cpu的性能、功能和效率 。
与opengl相比,vulkan支持深度硬件控制,可以大大降低高负载绘图任务中cpu的开销 。同时其对多核cpu的支持更加完善,更适合从高端工作站到pc平台再到移动平台的多核策略 。
vulkan因其高性能、低成本而广受欢迎 。虽然上市时间不长,但是支持vulkan的游戏和应用很多,比如doom dota2 飞车—无极限 。
1.1 vulkan概述
在介绍具体的开发技术之前,本节先介绍vulkan的历史传承和一些技术特点,同时对vulkan和其他图形应用界面(opengl、directx、metal等)做一个简单的比较 。).比较后介绍一下目前支持vulkan的游戏,具体内容如下 。
1 . 1 . 1 vulkan简介
在了解vulkan的具体知识之前,我们有必要先了解一下市场上主流的3d图形应用界面 。目前各种平台上主流的三维图形api有opengl、opengles、directx、metal、vulkan,各自的应用领域和特点如下 。
opengl应用广泛,支持多种操作系统平台(如windows、unix、linux、macos等) 。).基于它开发的应用程序可以方便、低成本地在不同的操作系统平台之间移植 。它可以用来开发游戏和工业应用 。
opengles是专门为移动嵌入式平台设计的,实际上是opengl的裁剪版 。去掉了opengl中很多不必要的特性,优化了对性能和电源有限的移动嵌入式平台的支持 。
directx是微软的专有技术,主要用于开发windows下的游戏,在这个领域占有非常高的比例 。比较新版本是directx12,大大优化了对多核cpu的支持,但只支持windows10 。
金属是苹果的专有技术,只能在macos和ios下使用 。应用领域相对狭窄,目前基于它的应用相对较少 。
vulkan和opengl一样,是跨平台的3d图形应用界面,支持windows7、windows8.1、windows10、linux、android等平台 。
vulkan比较早被称为下一代opengl,项目名称是glnext 。它的设计考虑了统一平台的开发,所以不像opengl和opengles,根据硬件性能和电源区分不同版本,但是工作站、pc、移动嵌入式平台等等是完全一致的 。这对广大开发者来说是一个很大的好处 。
2016年2月16日,khronos组织发布了vulkan的第一个版本 。从此,数字图形技术行业产生了一个全新的图形应用程序接口,可以真正意义上与directx12和metal抗衡 。截止到2016年4月,google在androidn的第二个开发预览版中正式加入了对vulkan的支持,vulkan的主要特性如下 。
vulkan提供了更低的运行开销、更直接的gpu控制和更低的cpu负载 。它通过批处理的方式有效降低了cpu的负载,将cpu从额外的操作和渲染中解放出来执行其他任务 。
【vulkan是什么】与过去针对cpu单核设计的opengl相比,vulkan原生支持多线程和并发处理,可以更好地与采用多核策略的cpu配合工作 。directx12、metal等厂商专有的新一代图形应用程序接口也提供多线程并发支持,可见这是行业内的一大趋势 。
在着色器方面,vulkan不再指定类似opengl的着色器编程语言(opengl指定glsl着色器编程语言),而是采用一种称为spir-v(标准可移植中间表示)的二进制中间层格式 。这样,开发vulkan着色器时,开发者可以选择自己喜欢的着色器编程语言,比如glsl、hlsl等 。然后使用着色器专用编译器将着色器源代码编译成spir-v格式,可以在vulkan中使用,大大提高了灵活性 。
vulkan以统一的方式管理计算任务和图形渲染任务,而不使用单独的计算和图形应用程序接口来连接 。
与opengl的状态机不同,它会在运行任务时自动检查各种错误(无法关闭) 。为了追求更高的执行效率,vulkan将各种错误检查设计为可插拔模式 。开发人员可以在开发调试时打开所需的错误检查项,发布时关闭错误检查项,以达到更好的性能 。