音视频学习
OpenGL、AVFoundation 相关学习记录,希望有所得。观自在,望远山
墨谨礼
悠然,随心,随性
展开
-
正背面剔除和深度测试
OpenGL 的正背面剔除 在绘制 3D 场景的时候,我们通常会把对于观察者而言不可见的部分做一个丢弃的操作以此来提高性能。这种情况被称为隐藏面消除,也被称为消隐。画家算法 画家算法也叫作优先填充,它是一种物体空间和图像空间的消隐算法。当将三维场景投影到二维平面的时候,需要确定哪些多边形是可见的,哪些是不可见的,在物体空间中预先汁算面的可见性优先级,再在图像空间中生成消隐图。具体的操作如下,先绘制场景中的离观察者较远的物体,再绘制较近的物体,用绘制距离较近的场景覆盖较远的部分 例如下图:先绘制原创 2020-07-09 16:51:59 · 1036 阅读 · 0 评论 -
关于数字媒体的压缩
为缩小数字媒体的文件大小,我们需要对其进行压缩。一般来说我们所接触的媒体内容都需要进行一定程度的压缩,也就是说我们都是在和这些内容的原始文件的压缩格式在打交道。压缩技术可以大幅缩小缩小媒体文件的尺寸,但是通常会在资源的质量上有一定程度的衰减。色彩二次抽样 视频数据是使用称之为 YUV 颜色模式的典型案例。不过大部分软件开发者都更熟悉的是 RGB 颜色模式,即每个像素都是由红、绿、蓝三个颜色组合而成的。YUV 则使用色彩(颜色)通道 UV 替换了像素的亮度通道 Y(亮度)。下图展示图片分离亮度和色彩原创 2020-07-08 23:23:41 · 1891 阅读 · 0 评论 -
数字媒体介绍
而今,数字媒体早已融入我们的生活,身边有着各种音视频应用,但朋友们是否思考过这些媒体内容是如何被数字化的呢?在生活中,看到的图像和听到的声音都是通过模拟信号传递给我们的,眼睛和耳朵将这些信息转化成大脑可以解析的电信号。现实生活中的信号是连续的,信号的频率和强度都在不断变化,但是数字世界的信号是离散的,由 1 和 0 两个状态表示。要将模拟信号转换成我们能够存储并传输的数字信号,需要经过模拟-数字转换过程,这个过程我们称之为采样(Sampling)。数字媒体采样 媒体内容的数字化主要有两种方式:时间原创 2020-07-02 22:03:40 · 972 阅读 · 0 评论 -
AVFoundation 核心功能
学习 AVFoundation 之初,最大的挑战就是理解该框架所提供的的大量类及其功能。该框架包含超过一百个类,有着大量的协议和常量,面对这些内容,看起来掌握起来具有一定的难度,但是如果按照功能单元进行分解,就会相对容易理解,下面来梳理一下 AVFoundation 所提供的一些核心功能。音频播放和记录AVAudioPlayer 和 AVAudioRecorder 可以在应用中提供一种更简单的整合音频播放和记录的功能。这些方法并不是 AVFoundation 用于播放和记录音频的唯一方式,但却是学习起来原创 2020-07-02 19:48:41 · 304 阅读 · 0 评论 -
初识 AVFoundation 框架
AV Foundation 是苹果 OS X 系统和 iOS 系统中用于处理基于时间的媒体数据的高级 Objective-C 框架。通过开发所需的工具提供了大量强大的功能集,让开发者能够基于苹果平台创建先进的媒体应用程序。其构建考虑到了目前的硬件环境和应用程序,设计过程高度依赖多线程机制。充分利用了多核硬件的优势并大量使用 block 和 GCD 机制将复杂的计算进程放在后台线程运行。原创 2020-07-02 00:25:13 · 753 阅读 · 0 评论 -
使用 OpenGL 绘制正方形
使用 OpenGL 绘制正方形流程最终效果如下:要实现上图效果,需要两个操作:绘制正方形和添加移动指令。使用 OpenGL 绘制正方形由于该项目在 Mac App 环境下搭建,Mac 下环境搭建及 Mac 开发相关窗口不做讨论,如果有机会会在以后专门创建 Mac 开发下的学习笔记讨论相关操作。Mac 环境下需要用到的库#include "GLShaderManager.h"#include "GLTools.h"#include <GLUT/GLUT.h>GLShaderM原创 2020-07-06 10:28:08 · 3317 阅读 · 0 评论 -
关于 OpenGL 固定存储着色器的理解
存储着色器由 GLTools 的 C++ 类 GLShaderManager 管理着,可以满足我们基本的渲染需求原创 2020-07-03 14:47:20 · 332 阅读 · 0 评论 -
OpenGL 渲染流程图解析
OpenGL 渲染使用客户端<——>服务端的形式实现,客户端是我们编写的代码,服务端是计算机图形硬件厂商所提供的OpenGL实现。由上图可见,渲染管线分为上下两个部分,上面一部分是客户端,下面一部分是服务端。Client 客户端客户端是存储在 CPU 存储器中的,并且在应用程序中执行,或者在主系统内存的程序中执行。会将渲染命令和数据组合起来发送给服务器执行。Server 服务端实际上就是OpenGL中直接操作 GPU 绘制图形的部分。Client 和 Server 是独立异步原创 2020-07-02 18:38:42 · 741 阅读 · 0 评论 -
学习笔记_iOS 图片从文件渲染到屏幕的过程
一般情况下,显示是由 CPU 和 GPU 协作来完成的渲染,一次渲染的过程中,分工大致如下: CPU:计算 frame,图片解码,通过数据总线将需要绘制的纹理图片交给GPU GPU:纹理混合,顶点变换与计算,像素点的填充计算,渲染到帧缓冲区。原创 2020-07-01 10:25:17 · 882 阅读 · 0 评论 -
学习笔记_OpenGL下专业名词解释
快速了解OpenGL下专业名词OpenGL 上下文(context) 在应用程序调用任何 OpenGL 指令之前,需要安排创建一个 OpenGL 的上下文,这个上下文是一个非常庞大的状态机,保存了 OpenGL 的各种状态,这也是 OpenGL 指令执行的基础。 OpenGL 的函数不管在哪个语言中,都是类C语言一样的面向过程的函数,本质上都是对 OpenGL 上下文这个庞大的状态机中的某个状态或者对象进行操作,当然你得首先把这个对象设置为当前对象。因此,通过对 OpenGL 指令的封装,是可以将原创 2020-06-30 17:07:59 · 293 阅读 · 0 评论