OpenGLES——介绍

6
发表时间:2023-06-19 16:37

一、OpenGL介绍

    OpenGL(全写Open Graphics Library)是指定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口。它用于三维图像(二维的亦可),是一个功能强大,调用方便的底层图形库。

    OpenGL在不同的平台上有不同的实现,但是它定义好了专业的程序接口,不同的平台都是遵照该接口来进行实现的,思想完全相同,方法名也是一致的,所以使用时也基本一致,只需要根据不同的语言环境稍有不同而已。OpenGL这套3D图形API从1992年发布的1.0版本到目前最新2014年发布的4.5版本,在众多平台上多有着广泛的使用。


二、OpenGLES介绍

1.简介

    OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL 三维图形 API 的子集,针对手机、PDA和游戏主机等嵌入式设备而设计。

    OpenGL ES相对于OpenGL来说,减少了许多不是必须的方法和数据类型,去掉了不必须的功能,对代价大的功能做了限制,比OpenGL更为轻量。在OpenGL ES的世界里,没有四边形、多边形,无论多复杂的图形都是由点、线和三角形组成的,也去除了glBegin/glEnd等方法。


2.OpenGLES应用场景

    OpenGL ES是手机、PDA和游戏主机等嵌入式设备三维(二维也包括)图形处理的API,当然是用来在嵌入式设备上的图形处理了,OpenGL ES 强大的渲染能力使其成为我们在嵌入式设备上进行图形处理的优良选择。


我们经常使用的场景有

图片处理。比如图片色调转换、美颜等。

摄像头预览效果处理。比如美颜相机、恶搞相机等。

视频处理。摄像头预览效果处理可以,这个自然也不在话下了。

3D游戏。



3.OpenGLES版本


目前主流的手机都已经支持OpenGLES3.0版本及以上。


OpenGL ES 3.2 - 额外的 OpenGL 功能

该系列的最新版本 OpenGL ES 3.2 添加了基于 OpenGL ES 3.1 的Android 扩展包的附加功能,这使得移动 API 的功能明显更接近其桌面对应物 - OpenGL。


OpenGL ES 3.1 - 将计算引入移动图形

尽管 OpenGL ES 3.1 只是 API 的次要修订版中的一个凸起,但它是 API 的一个巨大里程碑,因为它增加了在 API 中进行通用计算的能力,从而将计算引入了移动图形。


OpenGL ES 3.0 - 增强的图形

OpenGL ES 3.0 是 OpenGL ES 的另一个进化步骤,特别是包括多个渲染目标、额外的纹理功能、统一缓冲区、实例化和变换反馈。


OpenGL ES 2.0 - 可编程着色

OpenGL ES 2.0 是第一个在当时最新一代图形硬件中公开可编程着色器的便携式移动图形 API。它在今天仍然是一个流行的 API,仍然是最广泛使用的 3D 图形 API,并且仍然是针对市场上最广泛设备的可靠选择。


OpenGL ES 1.X - 固定功能图形

OpenGL ES 1.0 和 1.1 是第一个可移植的移动图形 API,相对于 OpenGL 1.5 规范定义,提供固定功能图形加速


三、OpenGLES的渲染管线

1.什么是渲染管线

    渲染管线又称渲染流水线,它是图形图像从数据一步一步形成最终输出的画面所要经历的各种操作过程。数据经过一个操作后,被处理成下一个步骤需要的数据,最终一步一步整合成拼凑最终画面的元素。


抽象来说,以下两个大步骤是必要:

顶点渲染:用于渲染出形状

像素渲染:在形状中填充色彩

所以你可以简单地认为,渲染管线就是:


2.固定管线

固定渲染管线的OpenGLES不需要也不允许你自己去定义顶点渲染和像素渲染的具体逻辑,它内部已经固化了一套完整的渲染流程,只需要开发者在CPU代码端输入渲染所需要的参数并指定特定的开关,就能完成不同的渲染。


OpenGLES 1.x版本就是固定渲染管线的版本。现有的OpenGLES 1.x版本有:


OpenGLES 1.0

OpenGLES 1.1


3.可编程渲染管线

可编程渲染管线的OpenGLES版本必须由开发者自行实现渲染流程,否则无法绘制出最终的画面。开发者可以根据自己的具体需要来编写顶点渲染和像素渲染中的具体逻辑,可最大程度的简化渲染管线的逻辑以提高渲染效率,也可自己实现特定的算法和逻辑来渲染出固定管线无法渲染的效果。具有很高的可定制性,但同时也对开发者提出了更高的要求。


OpenGLES 2.0及其以上的版本则为可编程渲染管线的版本。目前具体的OpenGLES版本有:


OpenGLES 2.0

OpenGLES 3.0

OpenGLES 3.1


固定管线与可编程管线:











微信公众号:
蓝松文档:
地址:浙江省杭州市余杭区仓前街道龙园路88号3号楼A1318室(创鑫时代广场)