OpenGL描绘

1OpenGL描绘整体结构介绍
之前章节介绍过图库主要业务的UI展现是基于OpenGL实现的,宿主Activity或者Fragment会提供GLSurfaceView环境(布局文件中放一个GLSurfaceView即可);

本章介绍不同ActivityState的UI是如何在同一个GLSurfaceView中得到描绘的,先看下面的图:

在这里插入图片描述
首先需要为读者优先排除对上图所绘GLView的阅读恐惧,这个类是图库自己的类,和android OpenGL显示控件没有任何关系,把它当做一个普通类就行了;

图库中GLRootView继承了GLSurfaceView,所以布局文件中实际上使用的控件是GLRootView;GLRootView持有一个GLView(上图中的mContentView),当GLRootView需要描绘时,调用的是这个GLView的render方法;

GLRootView持有的GLView只是一个引用,堆上的对象实际上是每个ActivityState子类作为成员变量创建的,比如说上图中时间轴TimeBucketPage的mRootPane就是这个成员变量;也就是说,在显示时间轴的时候,GLRootView中的mContentView与TimeBucketPage的mRootPane指向的是堆上相同的对象,该对象是在TimeBucketPage中new出来的;

不同ActivityState只需要将属于自己的mRootPane对象(GLView)设置给GLRootView的mContentView就能达到绘制属于自己相关业务UI的目的;
GLView可以作为一种树结构来理解,可以拿其他的GLView对象作为其子GLView;有点类似于标

猜你喜欢

转载自blog.csdn.net/qq_42894864/article/details/102668916