vulkan是什么
vulkan是应用程序接口(API)。
Vulkan是一个图形和计算硬件的API(Application Programming Interface)。这个API由很多命令组成,它们允许程序员指定着色器程序,计算内核,对象和操作产生高质量的图像,特别是三维对象的彩色图像。
对程序员来讲,Vulkan是一些命令的集合,允许内核或者着色器,和shader执行的外部Vulkan aspect控制,使用着色器程序或者着色器和数据。数据是指二维或者三维几何物体和纹理图像,着色器和内核控制数据的处理,几何物体的光栅化,光栅化产生的光照和阴影的片段,及最终把几何对象渲染到帧缓冲区。
一个典型的Vulkan程序以调用系统函数打开窗口或者准备程序绘制显示的设备为开始。然后,调用命令打开队列,并向其提交命令缓冲区。命令缓冲区包含一系列命令,它们将会被底层的硬件执行。
应用程序能够做到:分配设备内存,关联内存和资源,从命令缓冲区中引用这些资源。绘制命令可调用应用程序的着色器程序,然而使用资源里的数据并产生图像。为了展示结果图像,一些平台相关的命令需要把结果图像转移到显示设备或者窗口。
对于实现者,Vulkan是一系列命令的集合,它允许构造命令缓冲区并提交到设备。现代化的设备几乎对所有Vulkan操作都加速了,把数据和帧缓冲区存储在高速内存,在专用的GPU上执行着色器。
实现者的任务是在主机端提供软件lib,它实现了Vulkan API,把每一个Vulkan命令适当的映射到图形硬件以利用物理设备的能力。把Vulkan看作拥有绘制操作可调用的可编程阶段和状态驱动固定阶段的管线。