3.19WorldWindAndroid绘图解析

WorldWindAndroid中有两个上下文,一个是DrawContext,另一个是RenderContext,二者有什么关系呢?同时,drawFrame中的drawable和renderFrame中的renderable有什么关系呢?

所有的问题都要从WorldWindow这个类开始:

父类:GLSurfaceView,接口:Choreographer.FrameCallback,GLSurfaceView.Renderer,MessageListener

与GLSurfaceView相关的方法是setRenderer,与Choreographer.FrameCallback相关的方法是doFrame,与GLSurfaceView.Renderer相关的方法是onSurfaceCreated,onSurfaceChanged,onDrawFrame!

WorldWindow中的drawFrame和renderFrame实质都是调用BasicFrameController中的drawFrame和renderFrame!

现在呢?就梳理一下大概的过程:WorldWindow中的renderFrame方法会在doFrame被调用,renderFrame方法中将遍历Worldwind中的图层,并调用图层的render方法,向drawableQueue中添加drawable;然后Worldwindow中的drawFrame方法在onDrawFrame中被调用,drawFrame将遍历drawableQueue中的drawables,调用其draw方法完成绘制!

而在这一个中,Frame资源被renderContext和drawContext所共有,操作同一个Frame的drawableQueue中的drawables,一个用来将数据渲染成drawable,一个用来完成drawable最终的绘制!


大概的意思是renderFrame渲染图层生成drawable,并放在frame的framequeue属性中,然后在drawFrame中绘制drawable,生成最终的图像!

猜你喜欢

转载自blog.csdn.net/upcdxlq/article/details/79612089
今日推荐