Vulkan
一帧就是:拿到一张交换链图像,把绘制录进命令缓冲,提交到队列,再 present。本机没有 Vulkan SDK,所以这里没有运行截图。
- 01Instance 和设备
创建 instance,选出带图形队列的物理设备,再创建逻辑设备和队列。
- 02交换链图像
表面和交换链由平台层提供。后面的绘制只使用被 acquire 到的那一张图像。
- 03Render pass 和管线
颜色附件从 UNDEFINED 清成底色,结束时变成 PRESENT。管线绑定着色器、视口和光栅状态。
- 04命令缓冲
begin、开始 render pass、绑定管线、画三个顶点、结束。三角形的 SPIR-V 在源码里留了入口,没有附带一份没编译过的字节码冒充结果。
- 05提交和 present
队列等待 image-available,在颜色输出阶段再画,完成后发出 render-finished。present 等这枚信号量。
源码在 renderers/vulkan/triangle.cpp。它描述这条提交路径,没有在这台机器上编译或运行。