Vulkan API基本概念(一)


Instance

具体的Vulkan应用由“实例”表示。一个程序中可以创建多个实例,实例之间相互独立,互不干扰。

Vulkan实例由驱动装载器(loader)管理。装载器负责发现GPU设备,是多设备驱动的组合体。

当调用API创建Vulkan实例的时候,Vulkan SDK内部会经由loader查找GPU设备。

创建Vulkan实例需要两个输入信息:

  应用程序的信息

  内存分配回调函数

Vulkan通过用户输入的内存分配器来分配内存。


GPU

创建完Vulkan Instance,就可以枚举所有的Vulkan GPU设备。这些设备可能来自不同的设备厂商。

有了GPU设备,就可以获取具体GPU的信息,比较不同GPU设备之间的兼容性等。


Device

找到了合适的GPU,就可以通过GPU创建设备示例。


Queues

有了设备,就可以创建命令队列。

队列封装了图形、计算、直接内存访问功能,独立调度、异步等调度操作。


Command Buffer

有了设备,就可以创建命令缓冲。命令缓冲是GPU命令的批次集合。

用户可创建任意多的命令缓冲,支持在多线程中创建。


Command

在命令缓冲区中可以创建多个命令。多个命令完成批次即命令缓冲后,可以重复利用。

这里有点像OpenGL里面的NameList。


Shaders

有了设备,就可以创建Shader。同样支持多线程。


Pipeline

渲染管线同样需要设备创建。

渲染管线状态包括:Shaders,混合、深度、剔除、模版状态等。

另外Vulkan提供了API保存和加载渲染管线的状态。


Vulkan资源

资源包括CPU资源和GPU资源。

CPU资源通过vkCreate创建,GPU资源由vkAllocMemory创建,由vkBindObjectMemory与CPU对象绑定。




vkCreateInstance

你可能感兴趣的:(Vulkan API基本概念(一))