
osgEarth
文章平均质量分 69
longlongway2012
今日之事,今日毕。
展开
-
osgEarth多图层渲染
osgearth的多个layer同时渲染,使用的技术时多pass渲染,即,将一个瓦片的mesh,应用多个不同的的layer进行渲染,一个layer就是一个渲染pass。TileNode::merge函数,在upatetraverse中调用,更新多个layer的渲染资源的绑定,如图片,渲染状态等。原创 2024-01-22 09:48:45 · 694 阅读 · 0 评论 -
osgEarth数据调度
对地形内部进行裁剪,进入到tilenode的裁剪遍历,每个tileNode,都有四个child(quadtree),逐个执行裁剪遍历,如果某个child没有加载,设置dirty状态,执行loader加载待加载的子节点。由加载线程加载的数据,需要在eventtraverse的遍历中,多级遍历后调用到 PagerLoader:traverse遍历,对request进行合并。如果child无效,创建childTile。然后调用TileNode::merge。处理节点添加回调实践,检测碰撞等。原创 2024-01-22 09:47:16 · 1101 阅读 · 0 评论 -
osgearth瓦片渲染
生成DrawTilecommand,保存渲染状态、投影、pass,几何体(SharedGeometry)等参数,并将DrawTileCommand添加到与某个layer相关联的layerDrawable中。TerrainCuller,在执行cull流程时,遍历SurfaceNode,获取,::addDrawCommand 将可见的tile加入到待渲染列表中。SharedGeometry: 瓦片渲染的最小单元,由GeometryPool::createGeometry创建,保存mesh信息。原创 2024-01-22 09:42:11 · 1195 阅读 · 0 评论 -
osgearth瓦片纹理申请和重投影
瓦片纹理申请和重投影本文跟踪了如何从目标坐标系计算的瓦片,去查找源坐标系的瓦片进行加载。主要思路:基于目标坐标系的level级别,计算当前距离需要显示的瓦片TileKey将此瓦片的范围转换到源数据所在坐标系(服务器获取的瓦片所对应的坐标系)计算相交关系,找到目标坐标系的范围在源坐标系所覆盖的瓦片(可能对应多张)申请源数据瓦片,将瓦片缓存,等待读取完毕,执行瓦片拼接为一张大图将目标坐标系的范围变换到源坐标系后的范围与源坐标系的范围,按照距离(米)进行映射重新采样,获取一张新的image,作为原创 2024-01-22 09:00:02 · 1270 阅读 · 0 评论