Jonny / TECHNICAL ART
VULKAN 1.0

Vulkan

一帧就是:拿到一张交换链图像,把绘制录进命令缓冲,提交到队列,再 present。本机没有 Vulkan SDK,所以这里没有运行截图。

  1. 01
    Instance 和设备

    创建 instance,选出带图形队列的物理设备,再创建逻辑设备和队列。

  2. 02
    交换链图像

    表面和交换链由平台层提供。后面的绘制只使用被 acquire 到的那一张图像。

  3. 03
    Render pass 和管线

    颜色附件从 UNDEFINED 清成底色,结束时变成 PRESENT。管线绑定着色器、视口和光栅状态。

  4. 04
    命令缓冲

    begin、开始 render pass、绑定管线、画三个顶点、结束。三角形的 SPIR-V 在源码里留了入口,没有附带一份没编译过的字节码冒充结果。

  5. 05
    提交和 present

    队列等待 image-available,在颜色输出阶段再画,完成后发出 render-finished。present 等这枚信号量。

源码在 renderers/vulkan/triangle.cpp。它描述这条提交路径,没有在这台机器上编译或运行。