首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >什么岗位需要学习 OpenGL ES ?说说 3.X 的新特性

什么岗位需要学习 OpenGL ES ?说说 3.X 的新特性

作者头像
字节流动
发布2024-05-27 17:10:18
发布2024-05-27 17:10:18
1.2K2
举报
文章被收录于专栏:字节流动字节流动

什么是 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 有什么新特性?

纹理

  • 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 着色器脚本

OpenGLES 3.x 着色器脚本

其中,#version 300 es 为 OpenGL ES 3.0 版本声明,3.0 中使用 in 和 out 关键字取代 attribute 和 varying ,layout 关键字直接为脚本中的属性指定位置,为属性赋值变成了:

而原来 2.0 的赋值方式为:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-05-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 字节流动 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么学习 OpenGL ES
  • OpenGL 岗位需求
  • OpenGL ES 3.X 有什么新特性?
    • 纹理
    • 着色器
    • 几何形状
    • 缓冲区对象
    • 帧缓冲区
    • OpenGL ES 3.x 着色器语言规范变化
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档