
Vulkan学习之路
文章平均质量分 93
vulkan学习记录
w还是晒太阳吧
这个作者很懒,什么都没留下…
展开
-
Vulkan学习笔记【八】 Uniform Buffers
typetypeisthen现在,我们已经可以传递顶点属性给顶点着色器,但对于一些所有顶点都共享的属性,比如顶点的变换矩阵,将它们作为顶点属性为每个顶点都传递一份显然是非常浪费的。Vulkan 提供了资源描述符()来解决这一问题。描述符是着色器中访问缓冲和图像数据的一种方式。我们可以将变换矩阵存储在一个缓冲中,然后通过描述符在着色器中访问它。描述符布局(descriptor layout)用于指定可以被渲染管线访问的资源类型,就类似渲染流程指定可以被访问的附着类型。原创 2023-12-24 16:28:01 · 1335 阅读 · 1 评论 -
Vulkan学习笔记【七】缓冲
第一个顶点索引位于绑定索引缓冲区内的firstIndex × indexSize + offset的偏移量,其中offset是vkCmdBindIndexBuffer指定的偏移量,indexSize是indexType指定的类型的字节大小。我们只使用一次指令缓冲,并等待从函数返回,直到复制操作完成执行,使用VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT告诉驱动程序我们的意图。然后,我们将使用缓冲区复制命令将数据从暂存缓冲区移动到实际的顶点缓冲区。原创 2023-10-05 12:46:20 · 506 阅读 · 0 评论 -
Vulkan学习笔记【六】 多帧并行渲染和窗口缩放
从理论上讲,在应用程序的生命周期内,交换链图像格式可能会发生变化,例如,当将窗口从标准范围移动到高动态范围监视器时。在chooseSwapExtent中,我们已经查询了新的窗口分辨率,以确保交换链图像具有(新的)正确的大小,因此不需要修改chooseSwapExtent(请记住,在创建交换链时,我们已经必须使用glfwGetFramebufferSize以像素为单位获得表面的分辨率)。如果交换链不是最优的,您也可以决定这样做,但在这种情况下,我选择继续进行,因为我们已经获得了一个映像。原创 2023-09-30 19:36:37 · 776 阅读 · 0 评论 -
Vulkan学习笔记【五】 渲染
之前我们已经介绍了一些有关帧缓冲的内容,并且配置了渲染流程信息。接下来,我们对帧缓冲进行配置。我们在创建渲染流程对象时指定使用的附着需要绑定在帧缓冲对象上使用。帧缓冲对象引用了用于表示附着的 VkImageView 对象。对于我们的程序,我们只使用了一个颜色附着。但这并不意味着我们只需要使用一张图像,每个附着对应的图像个数依赖于交换链用于呈现操作的图像个数。我们需要为交换链中的每个图像创建对应的帧缓冲, 在渲染时,渲染到对应的帧缓冲上。原创 2023-09-17 23:35:05 · 1141 阅读 · 1 评论 -
Vulkan学习笔记【四】 配置渲染管线
图形管道是将网格的顶点和纹理一直到渲染目标中的像素的操作序列。下面是一个简单的概述:input assembler 获取顶点数据,顶点数据的来源可以是应用程序提交的原始顶点数据,或是根据索引缓冲提取的顶点数据。vertex shader 对每个顶点进行模型空间到屏幕空间的变换,然后将顶点数据传递给图形管线的下一阶段。tessellation shaders 根据一定的规则对几何图形进行细分,从而提高网格质量。通常被用来使类似墙面这类不光滑 表面看起来更自然。原创 2023-09-10 22:36:18 · 978 阅读 · 1 评论 -
Vulkan学习笔记【三】 渲染表面配置
由于Vulkan是一个平台无关的API,因此它不能自己直接与窗口系统接口。为了在Vulkan和窗口系统之间建立连接并将结果显示到屏幕上,我们需要使用WSI(窗口系统集成)扩展。在本章中,我们将讨论第一个,即VK_KHR_surface。它是一个VkSurfaceKHR对象,该对象表示要呈现渲染图像的抽象表面类型。我们程序中的surface将由我们已经用GLFW打开的窗口支持。原创 2023-08-27 23:16:47 · 1064 阅读 · 1 评论 -
Vulkan学习笔记【二】 设备选择
当使用Vulkan创建图形应用程序时,需要创建一个VkDevice对象,该对象是与物理图形设备之间的接口。在创建VkDevice之前,需要创建一些队列(VkQueue),这些队列是用来将图形命令发送到GPU的。每个VkQueueFamily代表一组具有相似性质的队列,例如渲染队列、计算队列等。在创建VkDevice时,需要选择一个或多个VkQueueFamily作为设备队列。通过选择适当的VkQueueFamily,可以将不同类型的图形命令提交到GPU中。原创 2023-08-20 00:38:01 · 542 阅读 · 1 评论 -
Vulkan学习笔记【一】 创建窗口与实例
Vulkan 是作为一个跨平台的图形 API 设计的。以往许多图形 API 采用固定功能渲染管线设计,应用程序按照一 定格式提交顶点数据,配置光照和着色选项。随着显卡架构逐渐成熟,提供了越来越多的可编程功能,这些功能被集成到原有的 API 中。造成驱动程序要做的工 作越来越复杂,应用程序开发者要处理的兼容性问题也越来越多。随着移动浪潮到来,人们对移动 GPU 的要求也 越来越高,但以往的图形 API 不能够进行更加精准地控制来提升效率,对多线程的支持也非常不足,导致没有发挥 出图形硬件真正的潜力。原创 2023-08-13 14:34:06 · 997 阅读 · 1 评论