Vulkan 学习
文章平均质量分 81
vulkan 学习
小猪佩奇TONY
求知若渴,虚心若愚
展开
-
Vulkan 学习(12)---- Vulkan pipeline 创建
渲染管线可以看作是一条生产流水线,定义了从输入顶点到输出图像的所有步骤,它包括一系列固定和可编程阶段,这些阶段按照顺序执行,以完成渲染任务。顶点输入阶段主要是从应用程序传递的顶端缓存区中读取顶点数据,并传递给后续阶段,顶点数据通常包括顶点位置、法线、颜色和纹理坐标等。如颜色、纹理坐标和法线等。开发者编写顶点着色器程序来定义每个顶点的处理逻辑,该阶段是必须启用的,是管线中唯一一个必不可少的阶段。)配置的结构体,用于将顶点数据组装成图元(如点、线、三角形),这些图元会被后续的管线阶段处理。原创 2025-01-07 22:59:02 · 658 阅读 · 0 评论 -
Vulkan 学习(11)---- Vulkan RenderPass 创建
Vulkan渲染通道(RenderPass) 定义了整个渲染管线一次执行的过程,包括了渲染所使用的所有资源和操作的描述(比如指定渲染管线的渲染目标,告诉管线要渲染到哪里RenderPass 本质上是一个渲染流程的完整描述(管理渲染流程),包括如何渲染这些数据的元数据和指令,但是不包括实际的数据(图像),通过与结合来获取实际的图像数据在Vulkan编程,RenderPass是必不可少的,它必须包含一个或者多个子通道(SubPass)每个子通道表示一个渲染阶段,并且都是使用RenderPass。原创 2024-12-22 15:09:47 · 381 阅读 · 0 评论 -
Vulkan 学习(10)---- Vulkan SwapChain 创建
Vulkan交换链(Swapchain)是Vulkan应用程序和窗口系统的一座桥梁,负责将渲染结果呈现给用户换个说法,交换链机制是一种图元绘制结果呈现的机制,它可以将绘制的结果渲染到平台相关的展示窗口/展示层当中交换链包含一组图像(一般作为渲染目标),这些图像被用于在屏幕上显示渲染的帧交换链中的图像个数和驱动层的实现是密切相关的。如果交换链中有两幅图像,那么称为双缓存,如果有三幅图像,称为三缓存。原创 2024-12-22 14:53:04 · 725 阅读 · 0 评论 -
Vulkan 学习(9)---- vkSuraceKHR 创建
中用于渲染表面的对象,是一个平台无关的抽象类型,用于封装与窗口系统相关的表面信息,通过这个对象,是一个平台无关的图形API,这意味着它不能直接与特定的窗口系统(应用程序可以与不同操作系统的窗口系统(比如。对象时,不同的窗口系统需要使用不同的。应用程序在窗口系统中创建和管理表面(可以将渲染结果输出到窗口上。),并和图形硬件交换图像(对象是平台无关的,但是创建。的窗口系统)进行交互。引入了窗口系统集成(原创 2024-09-22 15:57:43 · 423 阅读 · 0 评论 -
Vulkan 学习(8)---- vkImageView 创建
,可以灵活控制图像视图中每个颜色分量的来源,这对于图像处理非常有用,比如转换颜色格式,调整颜色通道等。图像视图定义了图像格式和访问方式,允许渲染管线和图像进行交互,无论是作为。用于指定如何从源图像中的颜色分量映射到目标图像视图中的颜色分量。比如图像有深度和/或模板信息,你可以选择只包括颜色方面。用于指定需要包含在图像视图中图像。在交换链中,我们需要为每个图像(允许你选择图像的哪些层面和。)创建一个基本的图像视图(),以便将它们作为颜色附件。),或者包括深度方面 ((图像的特性的层面),原创 2024-09-22 15:54:06 · 588 阅读 · 0 评论 -
Vulkan 学习(7)---- vkImage 创建
表示图像布局,定义了图像在内存中的组织方式,不同的布局对不同的操作有不同的性能特性,最终目的还是为了提高设备对于该图片的操作效率。更加复杂,因为它们是多维的,有独特的布局和格式信息,可以作为过滤,深度或者模板测试等复杂操作的源或者目标*和。值决定了图像数据在内存中的排列方式,进而影响访问图像数据的效率和方式。可以保证图像在各个方面之间的有效转换,优化性能并避免数据冲突。表示图片资源的宽、高和深度(各维度上的)大小,的重要格式,它用于指定图像数据在内存中的存储布局。用于存储图像数据,支持。原创 2024-08-25 17:24:10 · 507 阅读 · 0 评论 -
Vulkan 学习(6)---- vkBuffer 创建
表示的是一个线性内存块,这说明它的内存布局是连续的,类似于数组,这种布局适合存储顺序访问的数据,比如 顶点数据和索引数据,也支持随机访问。也就是说,创建的资源只是占用了一个位置,创建了一个句柄,并没有对应存储资源数据的内存,后续要通过。获取缓冲区的内存需求,包括内存大小,对齐要求以及适合的内存类型,注意此API 是查询已经创建的。在设备内存绑定到资源上之前,需要确定使用什么类型的内存,以及资源需要多少内存。对象来表示,是一种用于存储通用数据的资源,可以用来存储顶点数据,索引数据,其中需要重点关注的是。原创 2024-08-25 16:10:34 · 472 阅读 · 0 评论 -
Vulkan 学习(5)---- Vulkan 内存分配
表示该内存类型上分配的内存为缓存类型,Host 端访问缓存的内存类型会比较快,但是非缓存内存总是同步内存(VK_MEMORY_PROPERTY_HOST_COHERENT_BIT ),它对物理设备是直接可见的,物理设备可以直接读取其中的内存区块,设备内存和物理设备之间的关系十分紧密,因此它的性能比宿主机内存更高。将内存管理的工作交给了开发者自己负责,如何分配内存,如何指定内存策略都是由开发者自己决定的,当然处理问题也是由开发者自己负责的。: 表示内存堆是设备本地的,这种内存通常是最快的,因为它和。原创 2024-08-25 16:05:16 · 1129 阅读 · 0 评论 -
Vulkan 学习(4)---- Vulkan 逻辑设备
创建逻辑设备时,需要指定你希望使用的队列族和队列、启用的扩展、以及一些其他特性,我们通过。但是逻辑设备创建的时候,可以只关联。在某些设备中,优先级越高意味着将会得到更多的执行机会,具体的队列调由设备自身管理,(物理设备)的访问,使得应用程序能够提交命令并管理资源,而无需与物理硬件打交道。配置的优先级的有效等级范围为[0,1] ,值越大,优先级越高。必须 是目标物理设备中有效的设备队列族索引,并且。前文创建实例的时候可以设置实例的扩展,在。索引对应的设备队列族中的队列数量。的拓展并不一致,获取。原创 2024-08-18 13:39:54 · 1048 阅读 · 0 评论 -
Vulkan 学习(3)---- Vulkan 物理设备和队列组
,每个队列组这种包含一个或者多个队列,这些队列用于处理不同的任务,比如图形渲染,计算任务和传输操作。的物理硬件,通常是系统的一部分-- 显卡、加速器、数字信号处理器或者其他的组件。U执行的关键机制,理解队列组和设备队列的工作原理,有助于更好好的使用。系统里有固定数量的物理设备,每个物理设备都有自己的一组固定的功能。中指定的数量小于系统中的物理设备数量,则。如果所有物理设备成功写入,则会返回。下面函数用于枚举出物理设备所有的。中写入的物理设备不是所有,中,设备队列是一个重要概念,Vulkan 物理设备 (原创 2024-08-11 16:09:06 · 900 阅读 · 0 评论 -
Vulkan 学习(2)---- Vulkan Instance
的功能扩展,它们允许硬件制造商、平台开发者和第三方提供额外的功能和特性,这些功能和特性不包含在核心。参数是最为重要的核心参数 ,当创建实例时,该参数用于指定此实例环境中 Vulkan 的核心版本号。Layer 主要的特点是模块化,可以根据需要加载和卸载,开发者可以选择在应用程序初始化时启用哪些层。库实例涉及向驱动程序提供应用程序的一些细节,比如应用程序的信息和引擎信息等。这几个值随便设置,甚至可以不设置,空值都可以,这些参数不影响实例的创建。Vulkan 的 Layer 层是一种重要的机制,允许开发者在。原创 2024-08-11 16:02:06 · 948 阅读 · 0 评论 -
Vulkan 学习(1)---- Vulkan 基本概念和发展历史
用于处理两个或者更多的动作指令同时发生的情况,此时的指令之间可能会产生争夺资源或者依赖于某些内存,该指令用于设置同步事件或者等待事件,插入流水线屏障对象,渲染通道子通道的依赖。的SDK,其中带有很多不同的资源和工具,可以辅助Vulkan程序的开发,这些工具和资源包括Vulkan的加载器,验证层,跟踪和回放工具。描述符集合指的是资源和着色器之间的接口,可以将着色器绑定到资源,比如图像或者缓存,可以将资源内存关联或者绑定到准备使用的着色器的实例上。的系统可以直接查询系统信息,并返回可用的物理设备的数量。原创 2024-07-07 15:26:55 · 2740 阅读 · 0 评论
分享