《Vulkan Tutorial》 笔记 12:Shader Module
VkShaderModule 类用以封装和管理已编译好的着色器代码,本节将说明如何创建 Shader Module,以及如何将其传递给渲染管线的特定阶段。
《Vulkan Tutorial》 笔记 11:图形管线介绍
Vulkan 中需要自己设定图形渲染管线,在一些旧的图形 API 如 OpenGL 中,时可以通过一些函数修改渲染管线的,如通过 `glBlendFunc` 修改管线中对于混合的操作。但在 Vulkan 中管线几乎是完全不变的,因此每当需要修改管线设置,就必须重新创建管线。
《Vulkan Tutorial》 笔记 10: Image Views
为了使用在 Swap Chain 最后获取的 VkImage,需要首先创建 VkImageView 对象。该对象作为外部对这个 Image 的 View,即该对象描述了该如何访问 Image,以及需要访问 Image 的哪一部分。如可以创建一个 Image View,描述该 Image 应该作为一个 2D 深度纹理,且不需要任何的 Mipmap Level。
《Vulkan Tutorial》 笔记 09: Swap Chain
在 Vulkan 中必须显式的创建 Swap Chain。SwapChain 是与 Surface 绑定的数据结构,其包含了多个 Image,应用渲染时会将渲染的结果放置到这些 Image 中,当调用 Present 时,SwapChain 会将这些 Image 通过其与 Surface 绑定,传递给 Surface,Surface 再将这些 Image 显示到平台的窗口或屏幕上。
《Vulkan Tutorial》 笔记 08: 窗口 Surface
因为 Vulkan 是一个平台不相关的 API,所以它无法直接与 Window 操作系统交互。为了建立 Vulkan 和 Window 操作系统之间的连接,就需要使用 `WSI(Window System Integration)` 拓展,其中最关键的就是 Surface。在本节中,会首先创建 Surface,并通过该 Surface 查询可以正确处理 Presentation 的队列族和队列。
《Vulkan Tutorial》 笔记 07: 逻辑设备和队列
在创建了 Physical Device(VkPhysicalDevice) 后需要建立一个 Logical Device (VkDevice)来与之交互。在创建 Logical Devices 时还需要指定需要从 Physical Devices 的 Queue Family 中创建多少 Queue。
《Vulkan Tutorial》 笔记 06:物理设备和 Queue Family
选择符合要求的物理设备和 Queue Family,物理设备是 Vulkan 的一个重要概念,它表示了一个支持 Vulkan 的 GPU 设备,Queue Family 则是物理设备的一个属性,表示了该设备支持的命令队列类型。
《Vulkan Tutorial》 笔记 05: Validation Layers
本部分重构前的代码可参考 _05_Validation_Layer
重构后的代码可参考 _05a_Refactor_Validation_Layer
本章涉及到的关键对象如下所示:
在程序变得更加复杂之前,需要了解 Validation Layers 如何帮助调试。
#什么是 Validation Layers
由于 Vulkan API 的设计理念是最小化驱动的负载,因此在 API 层只有 ...
《Vulkan Tutorial》 笔记 04:Instance
对于一个 Vulkan 应用而言,你首先需要通过创建一个 `instance` 来初始化 Vulkan 库, `instance` 是应用与 Vulkan 库的连接,在创建过程中会有相应的操作告知 Driver 你的应用的一些细节
《Vulkan Tutorial》 笔记 03:基本代码结构
本部分结果可参考 03_Base_Code
#基本结构
三角形应用的基本代码结构如下所示:
12345678910// HelloTriangleApplication.hclass HelloTriangleApplication {public: void run();private: void initVulkan(); void mainLoop(); ...