《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(); ...
《Vulkan Tutorial》 笔记 02:开发环境
本部分结果可参考 02_Development_Environment
本教程使用 VS 2022 进行开发,并使用 C++ 17 标准进行编译。
#Vulkan SDK
从 Vulkan 网站 下载并安装 Vulkan SDK:
或通过 winget 进行安装:
1winget install KhronosGroup.VulkanSDK
通常而言,安装后的路径为 C:\VulkanSDK ...
《Vulkan Tutorial》 笔记 01:概览
这一部分会先介绍 Vulkan 以及它解决的问题,然后会阐述绘制第一个三角形所需要的组成部分。
#Vulkan 的起源
早期的图形 API 诞生时是为了配合当时的显卡硬件,大多是采用可配置固定管线实现。随着显卡的架构及硬件发展,显卡也提供了更多的可编程功能,这些可编程功能也逐步的被添加进早期的图形 API 中。但因为这些图形 API 诞生时的设计目标架构与目前的显卡架构已经存在比较大的差异,许多的 ...