OpenGL ES (1): OPenGL-ES介绍

1.OPenGL简述


OPenGL(Open Graphics Library):开放图形接口,是一套跨编程语言,跨平台的编程接口规范,主要用于三维图形编程(二维也可以)。

但是三维图形的计算需要处理大量的数据,所以OpenGL不适于应用在小型设备上如手机。

OpenGL ES(OpenGL for Embedded System)是 OpenGL的一个子集,它是为嵌入式系统如(手机,汽车,家电等)而专门设计的OpenGL的子集。我们接下来要说得就是OpenGL ES。

OpenGl ES剔除了OpenGL中对四边形和多边形的支持,只能通过绘制三角形组成3D图形。

2.准备


先来看adnroid开发中常用的坐标系:

但是在这里我们不需要这个,请先把上面这个坐标系暂时忘记

我们需要的坐标系是下面这个

每个顶点的位置由(x,y,z)组成。而一个3D图形需要很多个点。

3.使用


Android为 OPenGL ES支持提供了GLSurfaceView组件用于显示3D图形,但其本身不绘制3D图形,绘制是由GLSurfaceView.Renderer来完成3D图形绘制。

在Android中使用OpenGL ES步骤如下:

  • 1.创建GLSurfaceView组件,用于显示绘制的图形

GLSurfaceView glView = new GLSurfaceView(this);

你会去创建一个没有被修改的GLSurfaceView实例,但是有时候不建议这样去做,因为你需要扩展这个类来捕获触摸的事件。

  • 2.创建GLSurfaceView.Render 内容绘制器,但是需要重写三个方法。

MyRenderer myRenderer = new MyRenderer();   //MyRenderer继承Renderer重写3个方法

  • 3.为GLSurfaceView设置绘制器

glView.setRenderer(myRenderer);

重写的3个方法如下:

  • onSurfaceCreated(GL10 gl , EGLConfig config):创建GLSurfaceView时,系统调用一次该方法。使用此方法执行只需要执行一次的初始化操作。
  • onDrawFrame(GL10 gl):系统在每次重画GLSurfaceView时调用这个方法。使用此方法作为绘制(和重新绘制)图形对象的主要执行方法。
  • onSurfaceChanged(GL10 gl , int width , int height):当GLSurfaceView发生变化时,系统调用此方法,这些变化包括GLSurfaceView的大小或设备屏幕方向的变化。常用来初始化3D场景。

其中的形参GL10代表了OpenGL ES的绘制画笔,当用Renderer绘制3D图形时,其实是调用GL10的方法来进行绘制。

猜你喜欢

转载自blog.csdn.net/qq_38261174/article/details/82959608