iOS音视频:OpenGL常用术语介绍

本文介绍了OpenGL的基础知识,包括OpenGL是什么,解决什么问题,以及为何选择它。文章重点讲解了OpenGL常用术语,如状态机、上下文、图元、顶点数组和顶点缓冲区、渲染、管线、着色器、光栅化、纹理、混合和帧缓存。通过这些术语,深入理解OpenGL如何利用GPU高效渲染图形图像。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、OpenGL简介


1.1 OpenGL是什么

OpenGL(Open Graphics Library,译为 开放图形库 或 开放式图形库):是用于 渲染 2D、3D矢量图形的跨语言、跨平台的应用程序编程接口库。

它是一种图形API库,它把计算机的资源抽象成一个个OpenGL对象,对这些资源的操作抽象成一个个OpenGL指令。由于它只提供渲染功能(操作的是GPU芯片),与窗口系统、音频、打印、键盘/鼠标或其他输入设备无关,所以具备跨平台性(主要运行在PC端,如Mac OS、Linux、Windows等)。

与OpenGL类似的图形API库还有OpenGL ES、Metal、DirectX等,它们之间的主要区别是:

  • OpenGL ES(OpenGL for Embedded Systems):是OpenGL的子集,针对手机、PDA和游戏主机等嵌入式设备而设计,去除了许多不必要的、性能较低的API。

  • Metal:是苹果公司推出的平台技术,主要运行于苹果各大平台上(macOS、iOS、tvOS)。该技术专为多线程而设计,并提供各种出色工具将所有素材整合在XCode中。经过优化,Metal使CPU和GPU能够协同工作来实现最优性能(它能够为3D图像提高10倍的渲染性能)。

  • DirectX:是微软公司创建的多媒体编程接口,由很多API组成(不仅仅是图形API),仅限于Windows平台上使用(目前不支持Windows以外的平台)。按照性质可分为四大部分,分别是显示部分、声音部分、输⼊部分和网络部分。

由于博主主要从事iOS开发,所以DirectX在此系列文章中将不做赘述。

1.2 OpenGL解决什么问题

作为图形API库,OpenGL、OpenGL ES、Metal在任何项目中解决问题的本质就是利用GPU芯片来高效渲染图形图像。使用这些图形API库也是iOS开发者唯一接近GPU的方式。

因此,图形API库常常被用在下述场景中:

  • 游戏开发中,对游戏场景的渲染

  • 音视频开发中,对视频解码后的数据渲染,给视频加滤镜处理等

  • 地图开发中,对地图数据的渲染

  • 动画中,实现动画的绘制

  • 航空航天、医疗行业等等

1.3 关于选择的问题

苹果于WWDC 2014上提出Metal,但直到WWDC 2018年,苹果才完成系统内部从OpenGL ES到Metal的过渡,同时宣布在苹果设备上(macOS Mojave、iOS 12、tvOS 12)弃用OpenGL/OpenGL ES/OpenCL。从事图形API工作的开发者需要从自身角度考虑由哪个入门,可以从下面几方面综合考虑:

  • OpenGL/OpenGL ES具备跨平台性,而Metal仅限于苹果平台。

  • 苹果自己的系统从OpenGL/OpenGL ES迁移到Metal花费了大量时间(4年左右),针对的是苹果内部系统底层API依赖,OpenGL/OpenGL ES由此变成了第三方图形API库。

  • 目前大多数OpenGL/OpenGL ES项目组很庞大(如百度地图、高德地图、大部分音视频项目组),未完成往Metal的迁移工作。此时仅仅会Metal是不够的。

所谓艺多不压身,沿着 OpenGL -> OpenGL ES -> Metal 的路线全部掌握也不失为一种选择。

2、 OpenGL常用术语介绍


2.1 OpenGL状态机

状态机是理论上的一种机器,它描述了一个对象在其生命周期内所经历的各种状态,状态间的转变,发生转变的原因、条件及转变中所执行的活动。或者说,状态机是一种行为,说明对象在其生命周期中响应事件所经历的状态序列以及对那些状态事件的响应。因此具有以下特点:

  • 有记忆功能,能记住其当前的状态;

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值