一:概述
Vulkan 是新一代图形和计算API,是由科纳斯组织(Khronos Group)维护的一套跨平台的、开放标准的、现代GPU 的编程接口,它仅仅是规定了一套编程接口,并没有接口的具体实现,实现是由硬件厂商适配实现的,市面上像NVIDIA、AMD和Intel等国际大厂基本提供了完整的Vulkan实现,国内的GPU厂商也在努力适配Vulkan标准。
众所周知,OpenGL也是科纳斯组织(Khronos Group)维护的一套GPU编程接口,那为什么不沿用OpenGL,继续迭代OpenGL版本,而是要新推出新一代编程接口Vulkan呢?虽然Vulkan和OpenGL都是对GPU的抽象,都能达到相同的功能,但它们的设计理念不同,可以说设计差异是非常之大,由于OpenGL从1992年到现在,已经有30多年的历史,GPU功能日新月异,与当年不可同日而语,在OpenGL保持向下兼容情况下,还要在OpenGL基础上设计一套编程接口显然是不可能的,所以推出了新编程规范Vulkan。那么Vukan是如何对GPU做抽象的,与OpenGL有哪些差异呢?主要有以下八个方面:
1. 是状态管理方式不同:
状态的术语是指GPU在执行其工作时所需要的一组信息,GPU内部划分为若干阶段,即渲染管线(简称管线),状态指定了管线每个阶段的行为。状态一般包括下面这些:着色器代码(即在GPU可编程阶段执行的代码)、管线各个阶段的输入输出数据(即顶点属性数据,纹理等),图元类型(即三角形,线,点等)以及其他一些信息。