自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 视锥体剔除(Frustum Culling)算法详解-透视投影矩阵直接推导

本文章介绍了如何从投影矩阵(ProjectionMatrix)推导,得到视锥体(Frustum)的六个面的面方程,并且判断一个**点(point)是否在视锥体范围内,或者包围球(Bound ing Sphere)**是否与视锥体相交。当然,我们也可以通过ViewMatrix,将平面萃取到摄像机坐标系空间;或者通过叠加WorldModelMatrix,将平面萃取到世界坐标系空间。

2022-03-31 14:11:02 3244 1

原创 Vulkan系列教程—VMA教程(十)—Debugging

Vulkan Memory Allocator(VMA)详细教程

2022-01-15 10:55:05 586

原创 Vulkan系列教程—VMA教程(九)—虚拟分配器

Vulkan Memory Allocator(VMA)系列教程

2022-01-14 22:17:46 540

原创 Vulkan系列教程—VMA教程(八)—用户数据

Vulkan Memory Allocator系列教程

2022-01-13 21:18:23 330

原创 Vulkan系列教程—VMA教程(七)—Defragmentation(碎片整理)

Vulkan Memory Allocator(VMA)系列教程

2022-01-12 20:48:45 443

原创 Vulkan系列教程—VMA教程(六)—用户自定义内存池

Vulkan Memory Allocator(VMA)系列专题教程

2022-01-11 20:28:47 648

原创 Vulkan系列教程—VMA教程(五)—资源重叠(Aliasing/OverLap)

Vulkan Memory Allocator教程,VMA教程,内存重叠分配

2022-01-10 21:00:23 505

原创 Vulkan系列教程—VMA教程(四)—内存预算(Memory Budget)

当开发一款图形学为主的游戏或者程序的时候,必须避免分配内存的时候超出物理内存承受能力。当内存被过量分配的命令提交之后,不好的事情就会发生

2022-01-09 11:35:18 1210

原创 Vulkan系列教程—VMA教程(三)—内存映射(Memory Mapping)

VMA(Vulkan Memory Allocator)系列教程,讲述了如何使用VMA以及其技术细节,帮助同学们完全掌握VMA

2022-01-08 13:02:03 1549

原创 Vulkan系列教程—VMA教程(二)—选择内存类型

VMA(Vulkan Memory Allocator),是AMD提供的Vulkan内存分配管理器,那么Vulkan的内存分配为何要使用VMA这种内存分配器呢?原因就在于其显存的分配次数是有限的(比如4096次),那么我们就需要分配一整块显存,然后自己使用offset以及size来进行

2022-01-05 23:00:42 956

原创 Vulkan系列教程—VMA教程(一)—快速上手VMA

Vulkan的内存分配器VMA系列教程

2022-01-05 07:18:02 1650

原创 C++内存对齐-位运算公式

C++当中经常用到的内存对齐公式如下:#define MG_ALIGN(size, align) (((size) + (align) - 1) & ~((align) - 1))我们来通俗解析下:1 目标:如果我们对齐为8,那么就是0x1000,则我们只需要让当前数字成为8的倍数就可以。2 举例:我们分两种情况讨论,一种是本数字不是8的倍数;一种是本数字就是8的倍数1 初始没对齐比如数字为15,就是0x1111,我们发现问题存在于最后的111,导致这个数比8大了7,但是7比8要小,那

2021-12-11 13:17:14 1239

原创 Vulkan迷惑问题-交换链中获取图片vkAcquireNextImageKHR的ImageIndex 与 currentFrame之间的关系

在vulkan当中,我们遇到了drawFrame函数,但是其中有inFlight的概念,那么如何理解这个概念,又如何理解在这个概念之下的同步控制(fence, semaphore)呢?

2021-11-13 20:06:23 1345

原创 视频编码技术(三)——Linux下ffmpeg编程实现摄像头捕捉

1 打开设备对于FFMpeg编程,首先要打开相关设备,这里我们打开的是linux下的webCam,也就是笔记本摄像头 。在Linux下的ffmpeg里面,需要梳理两个东西:a Video4linux2(简称V4L2),是linux中关于视频设备的内核驱动b /dev/video0 /dev/video1 都是代表目标录制设备其中帧率跟图像大小都是需要进行设置的,然后按照如下代码进行设备打开。static AVFormatContext* open_dev() { //注册所有设...

2021-06-14 12:20:29 1011 2

原创 视频编码技术(二)——YUV的ffmpeg编码实战

1 原视频转换成为YUV的RawVideoffmpeg -i test.mp4 -c:v rawvideo -pixel_format yuv420p video.yuv其中:-i 表示输入视频的路径-c 表示要进行编码,其中:v是要对视频进行操作rawvideo:这种编码器不会进行帧间压缩,只会存储原始yuv数据,所以输出文件会很大-pixel_format:输出的文件图像编码格式yuv420p:输出位yuv420的格式2 播放转换后结果ffplay -pixel_format

2021-06-13 14:36:10 776

原创 视频编码技术(一)——YUV

YUV格式相对于RGB 会有更好的存储效率,虽然图像上的品质会受到压缩的影响 ,但是传输速度会变快,且帧率刷起来之后看不出太多的压缩痕迹1 . YUV定义Y 用来描述亮度,UV用来描述影响色彩及饱和度当然可以用另一个解释方法,Y仍然是亮度,U解释为Cb(蓝色分量),V解释为Cr(红色分量),具体下面看公式。常用采样格式:4:2:0 4:2:2 不常用:4:4:4所以遇到一些视频打不开的情况,可以先查看视频的YUV格式,然后转码成为标准420格式单纯提取Y分量后,会看到灰度图的效果,即

2021-06-13 13:36:42 1221

原创 音频压缩编码技术(五)—音频重采样

首先记住音频构成的三元组:采样率、采样大小(位深)、通道数,相乘就是得到的码流那么重采样,就是把当前的三元组变更为另一个不一样的三元组44100/16/2—>48000/16/2 任何一个值发生变化都需要重采样为何重采样:1、 从音频设备采样的数据跟编码器要求的不一致2、 扬声器要求的音频数据与要播放的音频数据不一致3、 方便运算,比如混音消除,多声道变成单声道如何知道是否重采样:1、通过设备管理找到音频设备参数2、ffmpeg源代码查看,包括了各个平台的实现重采样步骤:1、创

2021-06-07 21:14:47 534 2

原创 音频压缩编码技术(五)—ffmpeg命令方式生成AAC文件

命令解析ffmpeg -i xxx.mp4 (输入的带有音频的多媒体文件) -vn (video no 过滤视频元素) -c:a libfdk_aac(-codec,audio 编码器选择) -ar 44100 (采样率) -channels 2(双声道) -profile:a acc_he_v2 (设置audio的配置文件,用后面的格式) audio.aac(文件名)...

2021-06-06 19:48:06 869

原创 音频压缩编码技术(四)—AAC编解码器

AAC介绍AAC(Advanced Audio Coding)由Sony、杜比实验室、AT&T等共同开发,目的是取代MP3目前常用的规格有 AAC LC/ AAC HE V1/AAC HE V21 对音频内容的编码格式AAC LC (low complexity)低复杂度规格,码流128k,音质较好,但是码流太大了。AAC HE V1:AAC LC + SBR(special band replication) 拿到频谱之后,把低频(也就是基频)保存主要成分,高频单独放大,保存音质。码流

2021-06-06 18:49:43 1399

原创 音频压缩编码技术(三)—常用编码器

常见编码器OPUS:延迟小,压缩率高,实时通讯相关应用都在使用,在线教育,音视频会议;WebRTC当中默认使用OPUS,将来会取代掉AACAAC:应用最广泛,ios/android都包含了硬件的AAC编解码,ffmpeg当中也有很多AAC编解码器,娱乐直播系统很多都在用Speex:包括了混音消除功能G.711:窄带音频,编码后小,适合固话等,声音损耗严重,会失真评测结果:OPUS>AAC>OTHERS...

2021-06-06 14:55:25 652 3

原创 音频压缩编码技术(二)—无损压缩霍夫曼

熵编码:无损压缩的统称常见熵编码:1 哈夫曼编码2 算术编码3 香农编码1 哈夫曼编码详解平衡:按照左小右大来组织结构哈夫曼:根据使用频率计算位置,出现频率高的就距离根节点近编码具体方式举例:比如有A,B,C,D,E五个字母,在文章中出现的个数分别为5,4,3,2,1个。那么首先取得权值最小的两个,组成一个子树其中,二者的父节点是新构造的虚拟节点,权值为二者之和,加一起为3,然后将这个虚拟节点再丢回去,继续排序,找到最小的两个,那就是两个三(ABC(DE)),再拿出来构造子树。将

2021-06-06 14:36:23 1191 1

原创 音频压缩编码技术(一)—有损压缩

有损:压缩之后无法还原,即为有损;保证不失真情况下尽可能压缩1 音频压缩关注点:1.1 消除冗余信息,比如20hz-20000hz之间,才是人敏感区域,其他音频需要过滤掉。1.2 冗余信息定义:人听觉范围之外,以及遮蔽信息的剔除2 音频压缩剪裁与屏蔽:2.1 频域遮蔽:环境音+各类人声音,如何凸显有用信息,遮蔽无效信息呢?利用傅里叶变换等,将时域信息转化为频域信息,众多的波形之中,留下来需要的波形即可,比如上图:0.02khz-20khza. 声音强度的静音门槛,本条曲线意味着根据不同

2021-06-06 14:09:18 1515

原创 ffmpeg 常用命令(Linux下)

1 首先要保证安装了alsa驱动2 可以使用ffmpeg -devices来查看是否拥有alsa驱动3 使用arecord -l 可以查看设备列表4 音频录制:ffmpeg -f alsa hw:0,0 out.pcm其中,第一个0是指0号声卡,第二个0,是指0号设备5 播放ffplay -ar 44100 -channels 1 -f s32le -i xxx.pcm...

2021-06-06 13:00:27 431

原创 Linux Ubuntu 编译FFMPEG音视频库,并实现例程

1 . 标题编译与安装1 注意,先确保系统中拥有alsa音频驱动,可以通过alsa命令看到是否拥有,没有就apt-get alsa即可,否则没法使用linux进行录音;确保系统中安装了libsdl跟yasmsudo apt-get install libsdl2-devsudo apt-get install yasm2 下载源代码ffmpeg3 cd 进入目录,执行编译配置命令 :./configure --prefix=/usr/local/ffmpeg --enable-deb

2021-06-05 18:08:24 560 2

原创 CubeMap当中STR坐标、图像翻转等问题的根本解释

1 问题的发生 在一个安静祥和的夜晚,我撸了一个实验:读入一个图片,贴到一个矩形上显示出来;读入六个图片,做一个cubeMap然后渲染一个天空盒。我发现,出现了两个情况:这张是在矩形显示一个路飞,我发现它反过来了,为什么呢?因为图片正常的存储格式都会把一张图的左上角定位(0 , 0)点,但是OpenGL的纹理映射会把当前Texture对应的图片的左下角定为(0,0)点,具体来说,一张图读入之后,会是一个RGB为一个单位的内存,理论上就是一个线性排列的RGB数组,比如我传入(100...

2021-03-26 13:50:01 567 3

原创 【计算机图形学】Brensenham直线算法解析

这里教大家brensenham算法的推导以及流程,并且给出实现的伪代码

2020-12-21 12:36:06 1263 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除