5 2 1 1 1 1 1 Vulkan articles

OpenGL或Vulkan渲染YUV格式数据

1 概述 YUV是一种广泛应用于视频和图像处理的颜色空间格式,它通过将亮度和色度分离来表示颜色信息,以提高压缩效率和适应人眼感知。为了深入了解YUV格式及其应用,本文将分为几个部分来讨论。首先,我们将探讨YUV格式的采样方式和存储格式,以及不同采样方式对图像质量和压缩效率的影响。其次,我们将研究RGB到YUV和YUV到RGB的转换方法,包括转换公式和矩阵运算,以便在不同颜色空间之间进行准确的转换。最后会介绍如何利用OpenGL或Vulkan 来处理和渲染YUV格式的图像或视频数据,将讨论使用着色器程序和纹理贴图技术来实现YUV数据的采样、转换和渲染的方法。 2 YUV介绍 YUV,“Y” 表示明亮度(Luminance),也就是像素的灰阶值,还含有较多的绿色通道量。因此需要单纯的 Y 分量就可以显示出完整的黑白图像。“U” 和 “V” 分别表示色度(Chrominance)和浓度(Chroma),用于描述色彩饱和度,U 分量是蓝色通道与 Y(亮度)的差值,V 分量是红色通道与 Y(亮度)的差值。……

Continue reading

Learn_Vulkan02_渲染框架实现_开篇

前言 距离上一次认真写一点东西,又过了1年之久,深感自己拖延症愈加严重,每次定好的计划总是无法做到真正的执行,这期间也可以给自己找个借口,那就是工作很忙,但也有大部分原因是因为感觉自己经验尚浅,想着要后面会不会推翻当下的方案,后面就是不知道从哪开始记录了,最后就进入了焦虑 -> 躺平 -> 焦虑的恶性循环。……

Continue reading

Learn_Vulkan01_重要对象浅析

1 概述 前面一篇文章是Learn_Vulkan00_第一个三角形,渲染出来了第一个彩色三角形。学习新事物的是一个很枯燥的过程,所以我们应该每个阶段想办法获得一些成就感,比如上一篇的三角形,先用最快的方式得到效果,能看到效果就能给我们带来进一步的学习动力。 上一个案例中用到的对象我只是列了一个列表,简单描述了各个对象的作用。但描述还是较为简短,在进入更复杂的Vulkan程序之前,还是想把几个重要对象梳理一遍。 层和扩展 实例 窗口表面 物理设备和队列族 逻辑设备和队列 交换链 说明:本文中的代码就是上篇文章中的代码,编程环境是Windows,如果要在Linux/MacOS中运行,还需要修改配置文件。……

Continue reading

Learn_Vulkan00_第一个三角形

1 概述 本文将描述一个基于C++/Vulkan渲染彩色三角形的案例。因为Vulkan API较为底层,对象也繁多,所以我尽可能只保留必要内容,目的是梳理出来一个Vulkan程序的基础框架,也是对Vulkan各个对象的初步理解。当然也出于这个关系,本文不会对每个API参数都进行详细解释。……

Continue reading