- 博客(23)
- 资源 (8)
- 收藏
- 关注
原创 osgEarth的Rex引擎原理分析(七十九)如何加载百度、高德、谷歌、微软的在线地图
目标:(七十八)中的问题155瓦片生成后,就是一堆图片。怎么对这堆图片进行编号,是目前主流互联网地图商分歧最大的地方。总结起来分为四个流派:谷歌XYZ:Z表示缩放层级,Z=zoom;XY的原点在左上角,X从左向右,Y从上向下。 TMS:开源产品的标准,Z的定义与谷歌相同;XY的原点在左下角,X从左向右,Y从下向上。 QuadTree:微软Bing地图使用的编码规范,Z的定义与谷歌相同,.....................
2020-02-23 22:19:36 8904 7
原创 osgEarth的Rex引擎原理分析(七十八)TileNodeRegistry和LayerDrawable中_tiles的关系
目标:(七十二)中的问题150TileNodeRegistry中的_tiles本质是随机快速访问的结构体,主要用于管理rex引擎中活跃的瓦片,对于处于休眠的瓦片会进行标记,达到一定数量后,通过rex的卸载器进行卸载。osgEarthDrivers/engine_rex/TileNodeRegistrytypedef RandomAccessTileMap TileNodeMap;Ti...
2020-02-15 14:15:35 442
原创 osgEarth的Rex引擎原理分析(七十七)rex引擎中绘制瓦片的调度过程原理
目标:(七十二)中的问题151主要是分析瓦片什么时候进入场景树,什么时候从场景树中移出1、初始化osgEarthDrivers/engine_rex/RexTerrainEngineNode.cppvoidRexTerrainEngineNode::dirtyTerrain(){ // Build the first level of the terrain. ...
2020-02-15 13:40:20 799
原创 osgEarth的Rex引擎原理分析(七十六)RexTerrainEngineNode和TerrainCuller中_terrain的关系
目标:(七十二)中的问题149RexTerrainEngineNode中的_terrain本质是osg::Group,主要是用来管理各级TileNode的。TerrainCuller中的_terrain本质是osgEarth::Drivers::RexTerrainEngine::TerrainRenderData,主要用来管理rex绘制的数据,包括绘制状态(当前帧号、绘制绑定等)、绘制图...
2020-02-14 22:02:59 390
原创 osgEarth的Rex引擎原理分析(七十五)rex的瓦片高程影像和高程文件中的影像尺寸如何对应
目标:(七十二)中的问题145高程层默认的尺寸大小为256*256osgEarth/TerrainLayer.cppvoidTerrainLayerOptions::setDefaults(){ _exactCropping.init( false ); _reprojectedTileSize.init( 256 ); _minLevel.init(...
2020-02-11 11:21:35 766
原创 osgEarth的Rex引擎原理分析(七十四)osgEarth::TerrainLayerOptions高程层选项中参数的含义
目标:(七十二)中的问题143主要用来说明高程、影像层的参数。osgEarth::TerrainLayerOptions高程层选项中参数的含义_tileSize(256):高程瓦片的默认大小_maxDataLevel(99):_minLevel(0):最小的LOD级别_maxLevel(23):最大的LOD级别待继续分析列表:9、earth文...
2020-02-11 10:51:37 678
原创 osgEarth的Rex引擎原理分析(七十三)从高程文件读取的高程信息如何填充rex的高程瓦片
目标:(七十二)中的问题147高程文件的划分规则和rex瓦片是不一样的,高程文件的0级就是文件本身,不管文件实际范围多大,然后采用二分法逐级增加。rex瓦片的0级对应整个地球表面。两个范围一般不是一一对应的,秘密尽在1、首先根据rex瓦片的范围从高程文件中找出相交的高程文件瓦片(该瓦片不同于rex瓦片,是和高程文件对应的瓦片,瓦片尺寸和rex瓦片最为接近)2、从相交的高程文件瓦片构...
2020-02-11 10:20:40 985
原创 osgEarth的Rex引擎原理分析(七十二)如何从高程影像变成高程网格
目标:(七十一)中的问题143有两种方法:1、对高程影像进行采样,用采样值来设置高程,通过CPU实现2、通过着色器来实现,在GPU上进行操作待继续分析列表:9、earth文件中都有哪些options((九)中问题)10、如何根据earth文件options创建不同的地理信息引擎节点((九)中问题)...
2020-02-08 07:54:14 742
原创 osgEarth的Rex引擎原理分析(七十一)高程瓦片的绘制过程
目标:(五十五)中的问题1421、在RexTerrainEngineNode遍历时生成renderleaf,其中的drawable为LayerDrawable(其对应earth文件中每一个高程、影像层)。在TerrainCuller进行遍历时,会对LayerDrawable添加实际瓦片对应的高程影像纹理,这样绘制出来就能看到高程影像效果了。osgEarthDrivers/engine_r...
2020-02-06 09:53:16 751
原创 osgEarth的Rex引擎原理分析(七十)TileRenderModel中的RenderingPass和RenderBindings
目标:(五十五)中的问题141TileRenderModel中的RenderingPass和RenderBindingsRenderingPass渲染通道主要存放Samplers采样器列表,采样器存放的是用来渲染影像、高程的纹理和矩阵RenderBindings渲染绑定用来存放SamplerBinding采样器绑定,每个采样器绑定记录采样器的名字(对应glsl文件中的uniform变量...
2020-02-06 09:41:12 336
原创 osgEarth的Rex引擎原理分析(六十九)状态树和渲染树的关系
目标:(五十五)中的问题140状态树和渲染树的建立是在CullVisitor中完成的。状态树你可以看成是一个二叉树,非叶子节点StateGraph和叶子节点ReaderLeaf组成,然后一个ReaderLeaf你可以看成有一个Drawable对象,但是场景渲染的是渲染树,状态树只是为了好转换成渲染树而存在的。 渲染树你也可以看成一棵二叉树,RenderStage(渲染台)是根节点,Rende...
2020-02-06 09:38:09 393
原创 osgEarth的Rex引擎原理分析(六十八)stateset中的adduniform、setTextureAttribute等最后是如何反应到opengl上的
目标:(五十五)中的问题139秘密在于(真正是在渲染时做的)osgUtil/RenderLeaf.cppvoid RenderLeaf::render(osg::RenderInfo& renderInfo,RenderLeaf* previous){ state.apply(rg->getStateSet()); state.apply(_parent...
2020-02-06 09:35:44 462
原创 osgEarth的Rex引擎原理分析(六十七)TileNode中的_surface(SurfaceNode)作用是什么
目标:(五十五)中的问题138每个瓦片TileNode都有一个_surface(SurfaceNode),这里面会存放瓦片的几何信息_drawable(TileDrawable),这个几何信息会传给DrawTileCommand,用于绘制该瓦片。osgEarthDrivers/engine_rex/TileNodeclass TileNode : public osg::Group,...
2020-02-06 09:29:34 402
原创 osgEarth的Rex引擎原理分析(六十六)DrawTileCommand中的采样器
目标:(五十五)中的问题137DrawTileCommand中的颜色采样器_colorSamplers和共享采样器_sharedSamplers的区别,能不能用一个。RenderBindings将采样器分为6个,前2个是颜色采样器,后4个是共享采样器。osgEarthDrivers/engine_rex/RenderBindingsenum Usage{ COLOR ...
2020-02-05 20:48:37 261
原创 osgEarth的Rex引擎原理分析(六十五)几个uniformmap的关系
目标:(五十五)中的问题136program中uniformmap(_uniformInfoMap)和stateset中的uniformlist(_uniformList)的关系以及state中的uniformmap(_uniformMap)1、program中uniformmap(_uniformInfoMap)在执行link的时候构造的,主要从shader文件中来,渲染遍历阶段...
2020-02-05 20:27:50 593
原创 osgEarth的Rex引擎原理分析(六十四)EngineContext的作用
目标:(五十五)中的问题135EngineContext的作用,主要是用来记录RexTerrainEngineNode方方面面的信息的。在rex引擎构建时,创建该上下文,并将引擎的四梁八柱信息都存放在该上下文环境中。osgEarthDrivers/engine_rex/RexTerrainEngineNodeclass RexTerrainEngineNode : public T...
2020-02-05 20:20:47 455
原创 osgEarth的Rex引擎原理分析(六十三)TerrainTileModel与TileRenderModel的关系
目标:(五十五)中的问题134TileRenderModel主要记录渲染各个瓦片的通道,一个通道对应一个可视化层(颜色、高层、法线等),每个瓦片TileNode都包含一个TileRenderModel。TileRenderModel在每个瓦片创建(有父TileNode情况下)/merge时进行构造每个LoadTileData请求中都包含一个TerrainTileModel。每个Ter...
2020-02-05 20:04:11 436
原创 osgEarth的Rex引擎原理分析(六十二)从earth文件加载高层图层的过程
目标:(五十五)中的问题133从earth文件加载高层图层的过程待继续分析列表:9、earth文件中都有哪些options((九)中问题)10、如何根据earth文件options创建不同的地理信息引擎节点((九)中问题)11、rex地理信息引擎的四梁八柱((九)中问题)12、osgEarth::TerrainEngineNode中setMap方法作用((十二)中...
2020-02-05 20:01:07 466
原创 osgEarth的Rex引擎原理分析(六十一)如何提取出指定范围的高程网格
目标:(五十五)中的问题132如果从dem/img等文件中提取出指定范围的高程网格,需要用到gdal库进行读取。遥感影像一般包含至少一个波段,波段对应波长,比如红、绿、蓝等,也包含透明度。osgEarthDrivers/gdal/ReaderWriterGDAL.cpposg::HeightField* createHeightField( const TileKey&...
2020-02-05 19:57:04 991
原创 osgEarth的Rex引擎原理分析(六十)TileNode与DrawTileCommand的关系
目标:(五十五)中的问题131TileNode与DrawTileCommand的关系DrawTileCommad的几何图形和瓦片编号从TileNode来,最终绘制是用DrawTileCommand的draw函数来实现的,DrawTileCommand还包含影像和高程纹理。TileNode参与场景图的构建工作。rex引擎的的裁剪(TerrainCuller)和osg的裁剪(CullVis...
2020-02-05 18:06:16 269
原创 osgEarth的Rex引擎原理分析(五十九)rex引擎如何将瓦片构造成地球形状
目标:(二十五)中的问题79秘密就在于convertLocalToModel函数,它会根据不同的投影方式生成瓦片的顶点osgTerrain/Locator.cppbool Locator::convertLocalToModel(const osg::Vec3d& local, osg::Vec3d& world) const{ switch(_coord...
2020-02-05 17:47:10 447
原创 osgEarth的Rex引擎原理分析(五十八)osgEarth::ShaderFactory osgEarth::ShaderLoader关系
目标:(五十四)中的问题130osgEarth::ShaderFactory osgEarth::ShaderLoader关系ShaderFactory主要用来产生各个着色器阶段的main函数,一般用户不需要直接使用它,除非有特殊的定制需要。用户只需要创建和使用VirtualProgram就可以了。ShaderFactory对象存放在osgEarth的注册表中。ShaderLoader...
2020-02-05 17:34:33 551
原创 osgEarth的Rex引擎原理分析(五十七)osgEarth中多个着色器的源代码的编译链接过程
目标:(五十四)中的问题129osgEarth中多个着色器的源代码的编译链接过程1、先一个一个编译void Shader::PerContextShader::compileShader(osg::State& state){ _extensions->glShaderSource( _glShaderHandle, 1, &sourceText,...
2020-02-05 17:32:22 491
osgAndroidExampleGLES2重新组织TestNativeCPlusPlus
2021-06-19
NVIDIA_Nsight_Tegra_Release_3.6.19217.7511.exe
2021-02-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人