Vulkan填坑学习Day20—暂存缓冲区
demi 在 周三, 07/28/2021 - 17:50 提交
在本章节我们创建两个顶点缓冲区。一个缓冲区提供给CPU-HOST内存访问使用,用于从顶点数组中提交数据,另一个顶点缓冲区用于设备local内存。
在本章节我们创建两个顶点缓冲区。一个缓冲区提供给CPU-HOST内存访问使用,用于从顶点数组中提交数据,另一个顶点缓冲区用于设备local内存。
Vulkan 创建顶点缓冲区,在Vulkan中,缓冲区是内存的一块区域,该区域用于向显卡提供预要读取的任意数据。它们可以用来存储顶点数据,也可以用于其他目的。
将之前在顶点着色器中直接硬编码的顶点数据替换为顶点缓冲来定义。我们首先创建一个 CPU 的缓冲,然后将我们要使用的顶点数据先复制到这个 CPU 缓冲中,最后,我们复制 CPU 缓冲中的数据到阶段缓冲。
我们已经成功地编写代码使用 Vulkan 在屏幕上绘制出了一个三角形,但这个程序还有许多细节问题我们没有处理。比如,窗口大小改变会导致交换链和窗口不再适配,我们需要重新对交换链进行处理。
Vulkan 渲染和显示,这一章节会把之前的所有内容进行整合,我们将会编写drawFrame函数,通过主循环main loop将三角形绘制到屏幕。drawFrame函数将会执行如下操作:
Vulkan 命令缓冲区,诸如绘制和内存操作相关命令,在Vulkan中不是通过函数直接调用的。我们需要在命令缓冲区对象中记录我们期望的任何操作。这样做的优点是可以提前在多线程中完成所有绘制命令相关的装配工作,并在主线程循环结构中通知Vulkan执行具体的命令。
Vulkan 帧缓冲区,我们在前面的章节中已经讨论了很多次framebuffers帧缓冲区,到目前为止我们配置了render pass渲染通道并希望输出一个与交换链图像格式一致的帧缓冲区,但是我们实际上还没有创建。
Vulkan 集成管线,本文整合前几章节的结构体和对象创建图形管线!
Vulkan 渲染通道,在我们完成管线的创建工作之前,我们需要告诉Vulkan渲染时候使用的framebuffer帧缓冲区附件相关信息。我们需要指定多少个颜色和深度缓冲区将会被使用,指定多少个采样器被用到及在整个渲染操作中相关的内容如何处理。所有的这些信息都被封装在一个叫做 render pass 的对象中。
Vulkan 固有功能,早期的图形API在图形渲染管线的许多阶段提供了默认的状态。在Vulkan中,从viewport的大小到混色函数,需要凡事做到亲历亲为。在本章节中我们会填充有关固有功能操作的所有结构体。