type
status
date
slug
summary
tags
category
icon
password

Vulkan大致初始化流程

  1. 创建Vulkan实例
  1. 创建Debug messenger(可选项,若编译选项为DEBUG时启用)
  1. 创建Window surface
  1. 选择物理设备并创建逻辑设备,取得队列(三种队列:图形、呈现、计算)
  1. 创建SwapChain(交换链)

Vulkan上下文

我们将在绘制、渲染的时候需要用到的Vulkan对象统一封装为Vulkan上下文:
我们抽象成以下的上下文初始化函数,进而初始化Vulkan:
可以发现顺序依次是:创建instance→挑选PhysicalDevice→创建surface→创建device。
其中surface的创建由窗口的API决定,比如GLFW、SDL和WIN32.

创建Instance

vulkan的instance由appInfo和createInfo决定,里面包括了Vulkan API版本的指定:

挑选Physical Device

考虑到大部分都是单一显卡,所以直接选择第一个就好,如果有多个设备需要考虑赋分机制:

创建Surface

如果是GLFW的话,用如下Callback:

请求Queue

我们要获取图形队列和呈现队列,所以写一个获取queueInfo的函数:
然后:

创建Command Pool

命令池是用来分配命令缓冲的,在渲染的时候需要用到命令缓冲,然后提交到队列:
 
回忆录Ambient Occlusion
  • Twikoo