什么是 OpenGL ES
OpenGL ES 是一种为嵌入式系统和移动设备设计的3D图形API(应用程序编程接口)。它是标准 OpenGL 3D 图形库的一个子集,专门为资源受限的环境(如手机、平板电脑、游戏机和其他便携式设备)进行了优化。
由于其在移动设备上的广泛适用性,OpenGL ES是学习移动3D图形编程的重要工具之一。
随着技术的发展,新的图形 API(如 Vulkan 和 Metal )也开始在移动平台上获得关注,但 OpenGL ES 仍然是一个重要的基准和学习起点。
为什么学习 OpenGL ES
音视频开发,渲染引擎,游戏开发,VR(XR),图像视频特效,这些方向的岗位都要求掌握 OpenGL 开发。
OpenGL 岗位需求
![什么岗位需要学习 OpenGL ES ?说说 3.X 的新特性](https://www.nxrte.com/wp-content/themes/justnews/themer/assets/images/lazy.png)
OpenGL ES 3.X 有什么新特性?
纹理
- 2D 纹理数组和 3D 纹理,保存一组 2D 纹理的纹理目标。
- sRGB 纹理,通常用于存储和显示经过 sRGB gamma 校正的图像,以获得更准确和更自然的颜色显示效果。
- 浮点纹理,常用于计算着色器(Compute Shader)。
着色器
- 二进制程序文件。在 OpenGL ES 3.0 中,完全链接过的二进制程序文件可以保存为离线二进制格式,运行时不需要链接步骤。这有助于减少应用程序的加载时间。
- 统一变量块。配合 UBO(Uniform Buffer Objects)使用,用于在渲染中传递大量数据。
- 布局限定符 layout(location = 0)。顶点着色器输入可以用布局限定符声明,以显式绑定着色器源代码中的位置,而不需要调用 API 。
几何形状
- 变换反馈(Transform Feedback)。可以在缓冲区对象中捕捉顶点着色器的输出。
- 多实例渲染。OpenGL ES 3.0 引入了 glDrawArraysInstanced 和 glDrawElementsInstanced 函数,它们允许开发者在不同的位置上绘制多个具有相同网格的物体,每个物体可以有不同的变换、纹理和其他属性。这种技术可以显著提高渲染大量相似物体(如粒子系统、草叶、树木等)的效率。
缓冲区对象
- UBO(Uniform Buffer Objects)。UBO 是一种用于在渲染中传递大量数据的机制。
- VAO 顶点数组对象。提供绑定和在顶点数组状态之间切换的高效方法,用于管理 VBO 和 EBO。
- 同步对象。OpenGL ES 3.0 引入了两种类型的同步对象:信号对象(Sync Objects)和栅栏对象(Fence Objects)。
- 像素缓冲区对象(PBO)。使应用程序能够执行对像素操作和纹理传输操作的异步数据传输。
- 缓冲区位块传输(Blit)。主要用于帧缓冲区之间的像素拷贝,性能高且使用方便,可以指定缓冲区任意矩形区域的像素拷贝。
帧缓冲区
- 多重渲染目标(MRT)。允许应用程序同时渲染到多个颜色缓冲区。
- 多重采样渲染缓冲区。减少锯齿和边缘的颤动,从而改善图像的平滑度和质量。
- 帧缓冲区失效机制。glInvalidateFramebuffer 接口是 OpenGL ES 3.0 引入的,提供了一个通知驱动程序不再需要帧缓冲区内容的机制(优化功耗和性能)。
OpenGL ES 3.x 着色器语言规范变化
OpenGL ES 2.0 着色器脚本
![什么岗位需要学习 OpenGL ES ?说说 3.X 的新特性](https://www.nxrte.com/wp-content/themes/justnews/themer/assets/images/lazy.png)
OpenGLES 3.x 着色器脚本
![什么岗位需要学习 OpenGL ES ?说说 3.X 的新特性](https://www.nxrte.com/wp-content/themes/justnews/themer/assets/images/lazy.png)
其中,#version 300 es 为 OpenGL ES 3.0 版本声明,3.0 中使用 in 和 out 关键字取代 attribute 和 varying ,layout 关键字直接为脚本中的属性指定位置,为属性赋值变成了:
![什么岗位需要学习 OpenGL ES ?说说 3.X 的新特性](https://www.nxrte.com/wp-content/themes/justnews/themer/assets/images/lazy.png)
而原来 2.0 的赋值方式为:
![什么岗位需要学习 OpenGL ES ?说说 3.X 的新特性](https://www.nxrte.com/wp-content/themes/justnews/themer/assets/images/lazy.png)
进技术交流群,扫码添加我的微信:Byte-Flow
![字节流动](https://www.nxrte.com/wp-content/themes/justnews/themer/assets/images/lazy.png)
本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/jishu/48697.html