
Vulkan 开发
文章平均质量分 91
字节流动
技术人,8 年大厂经验,熟悉 OpenGL、FFmpeg、Vulkan、Camera 开发,日常技术干货、个人总结、职场经验分享。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Vulkan 开发(十三):Vulkan 帧缓冲区(FrameBuffer)
每个帧缓冲区包含一组图像视图,这些图像视图表示实际的图像资源,可以是颜色附件、深度附件或模板附件,帧缓冲区用于将渲染输出写入这些图像中(存储渲染通道(RenderPass)输出的图像)。在Vulkan中,每个帧缓冲区至少需要一个颜色附件,而这个颜色附件可以是与SwapChain关联的ImageView。原创 2025-01-07 16:25:17 · 520 阅读 · 0 评论 -
Vulkan 开发(十二):Vulkan 渲染通道
Vulkan 渲染通道(RenderPass)定义了整个渲染管线的一次执行过程,包括了渲染过程中使用的所有资源和操作的描述(比如指定渲染管线的渲染目标,告诉管线要渲染到哪里RenderPass 本质上是一个渲染流程的完整描述(管理渲染流程),包含了如何渲染这些数据的元数据和指令,但不包含实际的数据(图像),通过与 Framebuffer 结合来获取实际的图像数据。在 Vulkan 编程中,RenderPass 是必不可少的,它必须包含一个或多个子通道(SubPass)。原创 2024-12-09 17:41:44 · 998 阅读 · 0 评论 -
Vulkan 开发(十一):Vulkan 交换链
FIFO 呈现模式的交换链Vulkan 交换链(Swapchain)是 Vulkan 应用程序与窗口系统之间的一座桥梁,负责将渲染结果呈现给用户。换个说法,交换链是一种图元绘制结果呈现的机制,它可以将绘制结果渲染到平台相关的展示窗口/展示层当中。交换链包含一组图像(一般作为渲染目标),这些图像被用于在屏幕上显示渲染的帧。交换链中的图像个数与驱动层的实现是密切相关的。如果交换链中有两幅图像,那么称为双缓存,如果有三幅图像,那么称作三缓存。原创 2024-11-14 16:50:23 · 1417 阅读 · 1 评论 -
Vulkan 开发(十):Vulkan 窗口表面(Surface)
Vulkan 系列文章:1. 开篇,Vulkan 概述2. Vulkan 实例3. Vulkan 物理设备4. Vulkan 设备队列5. Vulkan 逻辑设备6. Vulkan 内存管理7. Vulkan 缓存8. Vulkan 图像9. Vulkan 图像视图Vulkan 是一个平台无关的图形 API ,这意味着它不能直接与特定的窗口系统(如 Windows、Linux 或 macOS 的窗口系统)交互。为了解决这个问题,Vulkan 引入了窗口系统集成(Window System Integrati原创 2024-11-14 16:48:19 · 1201 阅读 · 0 评论 -
Vulkan 开发(九):Vulkan 图像视图
Vulkan 图像视图(VkImageView)用于描述如何访问 VkImage 对象以及访问图像的哪一部分。图像视图定义了图像的格式和访问方式,它允许渲染管线与图像进行交互,无论是作为纹理、颜色附件还是深度/模板附件。在交换链中,我们需要为每个图像创建一个基本的图像视图,以便将它们用作颜色附件。VkImage 作为纹理采样时,也必须要创建其对应的图像视图来更新描述符集 (DescriptorSet)。原创 2024-11-10 21:27:18 · 1070 阅读 · 0 评论 -
Vulkan 开发(八):Vulkan 图像
正确的使用VkImageLayout可以保证图像在各个方面操作阶段之间的有效转换,优化性能并避免数据冲突。原创 2024-11-10 11:53:30 · 894 阅读 · 0 评论 -
Vulkan 开发(七):Vulkan 缓存
Vulkan 中的缓存资源通过 VkBuffer 对象来表示, 它是一种用于存储通用数据的资源,可以用来存储顶点数据、索引数据、Uniform 数据等。VkBuffer 表示的是一个线性内存块,这意味着它的内存布局是连续的,类似于数组。这种布局特别适合存储顺序访问的数据,如顶点数据和索引数据,但也支持随机访问。我们创建 VkBuffer 时,可以通过设置 VkBufferCreateInfo 不同的 usage 标志来指定 VkBuffer 的用途。原创 2024-11-09 23:15:47 · 718 阅读 · 0 评论 -
Vulkan 开发(六):Vulkan 内存管理
本文避免一上去就讲一大堆代码,奉行概念先行。概念掌握的差不多了,再去看代码, 这样思路不容易卡住,大致就可以把握住整体代码逻辑,知道这一块代码是干嘛的,那一块是什么目的。原创 2024-11-09 23:13:35 · 969 阅读 · 0 评论 -
Vulkan 开发(五):Vulkan 逻辑设备
图片来自《Vulkan 应用开发指南》1.2.3.4.在 Vulkan 中,举例来说,物理设备可能包含了三种队列:图形、计算和传输。但是逻辑设备创建的时候,可以只关联一个单独的队列(比如图形),这样我们就可以很方便地向队列提交指令缓存了。原创 2024-10-29 21:13:23 · 989 阅读 · 0 评论 -
Vulkan 开发(四):Vulkan 设备队列
在Vulkan中,队列设备(Queue)是一个重要的概念。图片来自《Vulkan学习指南》每个物理设备包含一个或多个队列族(Queue Family),每个队列族包含一个或多个队列。这些队列用于处理不同类型的任务,如图形渲染、计算任务和传输操作。图片来自《Vulkan学习指南》Vulkan将设备队列按照队列族的方式组织,组织方式有以下特点:1. 一个队列族可以支持一到多个功能。2.一个队列族中包含一个或多个队列。3.同一个队列族中的所有队列支持相同的功能。原创 2024-10-29 20:58:53 · 841 阅读 · 0 评论 -
Vulkan 开发(三):Vulkan 物理设备
图片来自《 Vulkan 应用开发指南》上一节了解了 Vulkan 实例,一旦有了实例,就可以查找系统里安装的与 Vulkan 兼容的物理设备。,通常是系统的一部分--显卡、加速器、数字信号处理器或者其他的组件。系统里有固定数量的物理设备,每个物理设备都有自己的一组固定的功能。,为此 Vulkan 提供列举出系统中支持 Vulkan 的所有物理设备功能,开发者可通过 vkEnumeratePhysicalDevices() 函数枚举支持 Vulkan 的物理设备。原创 2024-10-20 11:37:09 · 831 阅读 · 0 评论 -
Vulkan 开发(二):Vulkan 实例
一文对比了 Vulkan 和 OpenGL 的特点,重点介绍了 Vulkan 的优势体现在哪里,本文将接着介绍 Vulkan 的一些重要概念。原创 2024-10-19 15:01:01 · 1341 阅读 · 0 评论 -
Vulkan 开发(一):Vulkan 概述
Vulkan 是由 Khronos Group 开发的一种现代、高性能的图形和计算 API。它设计用于替代 OpenGL,并提供的硬件控制。与 OpenGL 相比,Vulkan 可以更详细的向显卡描述你的应用程序打算做什么,从而可以获得更好的性能和更小的驱动开销。Vulkan 的开发者来自图形领域的各行各业,有 GPU 厂商,有系统厂商,有游戏引擎厂商等。所以 Vulkan 诞生之初就决定了它一定要有跨平台属性,目的就是成为行业内的统一标准。原创 2024-10-19 14:16:09 · 1936 阅读 · 5 评论