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

1、前言

iOS音视频】是个系列,里面会记录一些博主在iOS音视频方面的学习笔记、踩到的坑,以便温故而知新。

此系列文章包括但不限于:

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

  2. ...

本文是这个系列的第1篇文章,主要目的是帮助大家快速了解OpenGL,下面进入正文。

2、OpenGL简介

2.1 OpenGL是什么

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

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

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

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

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

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

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

2.2 OpenGL解决什么问题

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

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

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

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

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

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

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

2.3 关于选择的问题

苹果于WWDC 2014上提出Metal,但直到WWDC 2018年,苹果才完成系统内部从OpenGL ESMetal的过渡,同时宣布在苹果设备上(macOS MojaveiOS 12tvOS 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 的路线全部

你可能感兴趣的:(音视频开发,编程,程序员,ios,音视频,xcode,C++,c++)