估计大部分Anroid开发的同学,对OpenGL ES的了解可能也仅仅停留在三维图形的渲染,入门模板代码的编写阶段。在ARCore开发中,如果你选择使用Android+OpenGL ES的开发技术栈,就需要大家深入的学习和了解OpenGL ES技术了。那么接下来我们就分如下主题和大家来唠唠:
一、OpenGL ES概述
1. Open GL是做什么的?
- 高效、简洁的开放图形库接口,跨编程语言、跨平台的编程接口规范,主要用于三维图形编程;
- 遵照接口,不同平台上有不同的实现,思想完全一致,方法名称和使用也基本一致;
2. OpenGL ES和OpenGL是什么关系?
- OpenGL ES(OpenGL for Embedded System)是Open GL三维图形API的子集,针对手机、PAD和游戏主机等嵌入式设备;
- 相对于Open GL来说更轻量级,减少了许多不必要的数据类型,去掉了不必须的功能,对代价大的功能做了限制;
- OpenGL ES中没有四边形、多边形、无论多复杂的图形都是由点、线和三角形组成的,也去除了glBegin/glEnd等方法;
3. OpenGL ES在ARCore中的作用?
OpenGL ES在ARCore中,结合ARCore对环境的理解,返回的位置和光线等信息,完成2d或者3d图像的渲染。
二、OpenGL ES环境搭建
进行ARCore开发的第一步就是建立一个OpenGL ES环境,主要由如下几个步骤:
1. 创建GLSurfaveView或者其子类,调用setContentView()设置为Activity显示视图。
2. 获取GLSurfaveView或其子类的实例,在Activity中的onResume()和onPause()方法中处理相应的生命周期方法。
3. 设置GLSurfaveView的配置,如渲染器,渲染模式,EGLContext是否保存和GLContextClient版本等;
4. 实现GLSurfaveView.Render接口,重写onSurfaceCreate(),onDrawFrame()和onSurfaceChanged()方法;
三、案例源码解析
相信大家对OpenGL ES应该有了初步的了解。那么接下来我们将会依照ARCore官方提供的Demo的源代码,给大家逐步讲解ARCore是如何开发的。
1. 创建GLSurfaceView实例
java_arcore_hello_ar\app\src\main\res\layout\activity_main.xml
<RelativeLayout...