Vulkan填坑学习Day22—描述符布局和缓冲区
demi 在 周二, 08/10/2021 - 16:04 提交
Vulkan 描述符布局和缓冲区,在Vulkan中正确处理此问题的途径是使用资源描述符(resource descriptors)。描述符是着色器自由访问缓冲区和图像资源的一种方式。我们需要设置一个包含转换矩阵的缓冲区,并使顶点着色器通过描述符访问它们。
Vulkan 描述符布局和缓冲区,在Vulkan中正确处理此问题的途径是使用资源描述符(resource descriptors)。描述符是着色器自由访问缓冲区和图像资源的一种方式。我们需要设置一个包含转换矩阵的缓冲区,并使顶点着色器通过描述符访问它们。
Vulkan 索引缓冲区,索引缓冲区(index buffer)就是一个指向顶点缓冲区的指针数组,它允许我们重排列顶点数据,并复用多个已经存在的顶点数据,本章介绍了如何创建和使用索引缓冲区。
在本章节我们创建两个顶点缓冲区。一个缓冲区提供给CPU-HOST内存访问使用,用于从顶点数组中提交数据,另一个顶点缓冲区用于设备local内存。
Vulkan 创建顶点缓冲区,在Vulkan中,缓冲区是内存的一块区域,该区域用于向显卡提供预要读取的任意数据。它们可以用来存储顶点数据,也可以用于其他目的。
将之前在顶点着色器中直接硬编码的顶点数据替换为顶点缓冲来定义。我们首先创建一个 CPU 的缓冲,然后将我们要使用的顶点数据先复制到这个 CPU 缓冲中,最后,我们复制 CPU 缓冲中的数据到阶段缓冲。
我们已经成功地编写代码使用 Vulkan 在屏幕上绘制出了一个三角形,但这个程序还有许多细节问题我们没有处理。比如,窗口大小改变会导致交换链和窗口不再适配,我们需要重新对交换链进行处理。
Vulkan 渲染和显示,这一章节会把之前的所有内容进行整合,我们将会编写drawFrame函数,通过主循环main loop将三角形绘制到屏幕。drawFrame函数将会执行如下操作:
Vulkan 命令缓冲区,诸如绘制和内存操作相关命令,在Vulkan中不是通过函数直接调用的。我们需要在命令缓冲区对象中记录我们期望的任何操作。这样做的优点是可以提前在多线程中完成所有绘制命令相关的装配工作,并在主线程循环结构中通知Vulkan执行具体的命令。
Vulkan 帧缓冲区,我们在前面的章节中已经讨论了很多次framebuffers帧缓冲区,到目前为止我们配置了render pass渲染通道并希望输出一个与交换链图像格式一致的帧缓冲区,但是我们实际上还没有创建。
Vulkan 集成管线,本文整合前几章节的结构体和对象创建图形管线!