WorldWind Java 版学习:5、贴地面渲染过程

1、在窗口中点击一下,实际添加了两个点,如果是面测量,还会再添一个点,共三个点,此时还没构成面对象,会使用 BasicAnnotationRenderer 对象以标记形式绘制 MeasureTool$ControlPoint 的点对象,再点一下,就有了四个点,构造 SurfacePolygon 后,添加到 CustomRenderableLayer 中,然后在 doRepaint 方法中先在 preRender 方法中创建 Tile 的网格及纹理,再在 draw 方法中进行渲染
MeasureToolController.mousePressed(MouseEvent) line: 225
MeasureTool.addControlPoint() line: 1053
MeasureTool.addControlPoint(Position, String, Object) line: 2080
MeasureTool.doAddControlPoint(MeasureTool$ControlPoint) line: 2096
MeasureTool$CustomRenderableLayer(RenderableLayer).setRenderables(Iterable<Renderable>) line: 273

2、调用 CustomRenderableLayer 的 preRender 方法中将 SurfacePolygon 添加到 dc 中
StereoOptionSceneController(BasicSceneController).doRepaint(DrawContext) line: 27
StereoOptionSceneController(AbstractSceneController).preRender(DrawContext) line: 512
MeasureTool$CustomRenderableLayer(AbstractLayer).preRender(DrawContext) line: 217
MeasureTool$CustomRenderableLayer(RenderableLayer).doPreRender(DrawContext) line: 356
MeasureTool$CustomRenderableLayer(RenderableLayer).doPreRender(DrawContext, Iterable<Renderable>) line: 378
MeasureTool$CustomRenderableLayer(AbstractLayer).preRender(DrawContext) line: 217
MeasureTool$CustomRenderableLayer(RenderableLayer).doPreRender(DrawContext) line: 356
MeasureTool$CustomRenderableLayer(RenderableLayer).doPreRender(DrawContext, Iterable<Renderable>) line: 378
SurfacePolygon(AbstractSurfaceObject).preRender(DrawContext) line: 216
SurfacePolygon(AbstractSurfaceShape).makeOrderedPreRenderable(DrawContext) line: 552
SurfacePolygon(AbstractSurfaceObject).makeOrderedPreRenderable(DrawContext) line: 464
DrawContextImpl.addOrderedSurfaceRenderable(OrderedRenderable) line: 677

3、调用 preRenderOrderedSurfaceRenderables 方法构造 SurfaceObjectTileBuilder,然后递归构造 SurfaceObjectTile,最后添加到 currentTiles 中
StereoOptionSceneController(BasicSceneController).doRepaint(DrawContext) line: 27
StereoOptionSceneController(AbstractSceneController).preRender(DrawContext) line: 529
StereoOptionSceneController(AbstractSceneController).preRenderOrderedSurfaceRenderables(DrawContext) line: 937
StereoOptionSceneController(AbstractSceneController).buildCompositeSurfaceObjects(DrawContext) line: 1051
SurfaceObjectTileBuilder.buildTiles(DrawContext, Iterable<?>) line: 344
SurfaceObjectTileBuilder.assembleTiles(DrawContext) line: 859
SurfaceObjectTileBuilder.addTileOrDescendants(DrawContext, LevelSet, SurfaceObjectTileBuilder$SurfaceObjectTile, SurfaceObjectTileBuilder$SurfaceObjectTile) line: 911
SurfaceObjectTileBuilder.addTile(SurfaceObjectTileBuilder$SurfaceObjectTile) line: 984

4、得到 currentTiles 后,遍历其中的每个 Tile,创建纹理,然后采用渲染到纹理机制,分别绘制几何体的内部和外部,完成每个 SurfaceObjectTile 的网格和纹理的设置后,返回并添加到 surfaceObjectTiles 中
StereoOptionSceneController(BasicSceneController).doRepaint(DrawContext) line: 27
StereoOptionSceneController(AbstractSceneController).preRender(DrawContext) line: 529
StereoOptionSceneController(AbstractSceneController).preRenderOrderedSurfaceRenderables(DrawContext) line: 937
StereoOptionSceneController(AbstractSceneController).buildCompositeSurfaceObjects(DrawContext) line: 1051
SurfaceObjectTileBuilder.buildTiles(DrawContext, Iterable<?>) line: 345
SurfaceObjectTileBuilder.updateTiles(DrawContext) line: 489
SurfaceObjectTileBuilder.updateTile(DrawContext, SurfaceObjectTileBuilder$SurfaceObjectTile) line: 554
SurfacePolygon(AbstractSurfaceObject).render(DrawContext) line: 268
SurfacePolygon(AbstractSurfaceObject).drawOrderedRenderable(DrawContext) line: 595
SurfacePolygon(AbstractSurfaceShape).drawGeographic(DrawContext, SurfaceTileDrawContext) line: 574
SurfacePolygon(AbstractSurfaceShape).doDrawGeographic(DrawContext, SurfaceTileDrawContext) line: 641

5、得到 surfaceObjectTiles 后,在 draw 方法中进行渲染
StereoOptionSceneController(BasicSceneController).doRepaint(DrawContext) line: 27
StereoOptionSceneController.draw(DrawContext) line: 141
StereoOptionSceneController(AbstractSceneController).draw(DrawContext) line: 843
StereoOptionSceneController(AbstractSceneController).drawOrderedSurfaceRenderables(DrawContext) line: 985
StereoOptionSceneController(AbstractSceneController).drawCompositeSurfaceObjects(DrawContext) line: 1094
GeographicSurfaceTileRenderer(SurfaceTileRenderer).renderTiles(DrawContext, Iterable<SurfaceTile>) line: 101

posted on 2012-11-09 10:22  redfler  阅读(457)  评论(0编辑  收藏  举报

导航