OpenGL ES 2.0笔记1——简介

本文介绍了OpenGL ES 2.0的基础知识,包括其与OpenGL的区别,常见应用场景,以及Android对其的支持。重点讲解了在Android中如何搭建基本框架,如GLSurfaceView和GLSurfaceView.Renderer的使用,以及编写渲染流程的步骤。同时,提供了检查和配置OpenGL ES 2.0支持的代码示例,帮助开发者入门。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OpenGL是什么?OpenGL ES又是什么?

简介

OpenGL是一个跨平台的软件接口语言,用于调用硬件的2D、3D图形处理器。

然而受限于现在的移动设备性能,如果将OpenGL直接用在他们上面将会特别卡,于是就出现了OpenGL ES。 OpenGL ES是OpenGL的分支,他专门作用于嵌入式设备,去掉了OpenGL很多不必要的功能。

应用场景

  • 游戏
  • 视频播放器
  • 视频编辑应用
  • 图片编辑应用

等对图像处理的及时性要求较高的应用场景。

Android对OpenGL ES 的支持

OpenGL ES 版本 基于OpenGL的版本 Android引入的版本 兼容性 功能、特色
1.0&1.1 1.3&1.5 Android 1.0 - 固定的图像管道,开发难度相比2.0低
2.0 2.0 Android 2.2 不兼容1.x 可编程的渲染管道,性能效率更高,开发难度更高
3.0 3.x Android 4.3 兼容2.0 性能更高,支持ETC2格式的透明纹理压缩
3.1 4.x Android 5.0 兼容2.0/3.0 新增计算着色器、单独的着色器对象等新特性

版本的选择

由于此篇博客是学习阶段写的,而我在网上找到的大部分博客都是2.0,所以就以2.0为主。

其实我觉得应该是3.0,2.0确实太老了,现在Android4.3的手机都较少见了,而3.1又太新了。

导入

首先你得在AndroidManifest.xml中加入
<uses-feature android:glEsVersion="0x00020000" android:required="true" />

其中不同版本对应值:

OpenGL ES 版本 glEsVersion 版本
2.0 0x00020000
3.0 0x00030000
3.1 0x00030001

基本框架

Android框架里面提供了两个类来给你使用OpenGL ES API创建和操作图形:GLSrufaceViewGLSurfaceView.Renderer

GLSrufaceView

这是一个视图类,你可以通过OpenGL ES API来绘制和操作图形对象,他在功能上很类似与SurfaceView。你可以通过创建一个SurfaceView的实例并添加你的渲染器来使用这个类。

他的常用方法有:

  • setEGLContextClientVersion:设置OpenGL ES版本,2.0则设置2
  • onPause:暂停渲染,最好是在ActivityFragmentonPause()方法内调用,减少不必要的性能开销,避免不必要的崩溃
  • onResume:恢复渲染,用法类比onPause()
  • setRenderer:设置渲染器
  • setRenderMode:设置渲染模式
  • requestRender: 请求渲染,由于是请求异步线程进行渲染,所以不是同步方法,调用后不会立刻就进行渲染。渲染会回调到Renderer接口的onDrawFrame()方法。
  • queueEvent:插入一个Runnable任务到后台渲染线程上执行。相应的,渲染线程中可以通过ActivityrunOnUIThread的方法来传递事件给主线程去执行

其中,GLSurfaceView的渲染模式有:

  • RENDERMODE_CONTINUOUSLY:不停地渲染
  • RENDERMODE_WHEN_DIRTY:只有调用了requestRender()之后才会触发渲染回调onDrawFrame方法

GLSurfaceView.Renderer

此接口定义了在GLSurfaceView中绘制图形所需的方法。必须将此接口的实现作为单独

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值