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

本文是iOS音视频系列的第一篇,介绍了OpenGL的基本概念和常用术语,包括OpenGL的状态机、上下文、图元、顶点数组和顶点缓冲区、渲染、管线、着色器、光栅化、纹理、混合、矩阵和帧缓存。文章旨在帮助iOS开发者快速理解和应用OpenGL进行图形渲染。
摘要由CSDN通过智能技术生成

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 的路线全部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值