数字地球
文章平均质量分 87
hankern
Code World,Cool Life
展开
-
osgEarth的Rex引擎原理分析(一一零)state中_defineMap构建过程
目标:(一零九)中的问题195是在绘制过程中,每经过一个状态集StateSet就会将该状态集中的模式、属性、一致变量、定义都放入State的相应变量中。定义都放入_defineMap.osg/State.cppvoid State::pushStateSet(const StateSet* dstate){ pushModeList(_modeMap,dstate->getModeList()); pushAttributeList(_attribu.原创 2020-05-13 06:49:52 · 376 阅读 · 0 评论 -
osgEarth的Rex引擎原理分析(一零九)19级瓦片分辨率估算
目标:(一零八)中的问题194rex的瓦片分级为0、1、...、19第0级角度分辨率 180°第1级角度分辨率 180°/2...第19级角度分辨率 180°/2^19=0.00034332275390625°每个瓦片默认像素为256*256,则每个像素的角度分辨率为180°/2^19/256=0.0000013411045074462890625°,在赤道位置,地球半长轴简单取6400km,则每个像素的长度分辨率为:6400*(180°/2^19/256*3.14/18原创 2020-05-12 06:16:05 · 1492 阅读 · 0 评论 -
osgEarth的Rex引擎原理分析(一零八)章节目录
目标:(一零七)中的问题1911、导论2、三棵树场景树、状态树、渲染树3、资源调度4、着色器5、设计模式6、实战应用待继续分析列表:9、earth文件中都有哪些options((九)中问题)10、如何根据earth文件options创建不同的地理信息引擎节点((九)中问题)11、rex地理信息引擎的四梁八柱((九)中问题)12、osgEarth::TerrainEngineNode中setMap方法作用((十二)中问题...原创 2020-05-11 06:00:22 · 492 阅读 · 0 评论 -
osgEarth的Rex引擎原理分析(四十六)如何定制椭球体并进行椭球体间坐标转换
目标:目标:(四十五)中的108可以用于CGCS2000和WGS84的坐标转换osg::EllipsoidModel默认创建wgs84椭球体将CGCS2000和WGS84的经纬高坐标分别转换为XYZ,然后比较其差值osg/CoordinateSystemNodeclass EllipsoidModel : public Object{inline void conve...原创 2019-02-16 18:29:27 · 929 阅读 · 0 评论 -
osgEarth的Rex引擎原理分析(五十一)osg::Program与osgEarth::VirtualProgram的关系
目标:(四十五)中的问题113osgEarth::VirtualProgram在apply时用到了osg::Program,也就是VirtualProgram最终是要通过osg::Program实现着色器功能,只不过VirtualProgram中还封装了一些其他内容(比如继承、抽象属性,着色器代码管理等),方便使用而已。待继续分析列表:9、earth文件中都有哪些optio...原创 2019-02-22 06:18:31 · 902 阅读 · 0 评论 -
osgEarth的Rex引擎原理分析(四十七)Horizon Cull是什么意思
目标:目标:(四十五)中的109Horizon Cull是地平线裁剪的意思,顾名思义,低于水平线的物体都会被裁剪掉。所谓的地平线就是相机位置到地球表面的切线,下图竖直的黑线即是地平点,视点到所有地平点组成一个圆锥。下图中蓝色阴影部分表示地面线以下的点待继续分析列表:9、earth文件中都有哪些options((九)中问题)10、如何根据earth文件options...原创 2019-02-17 06:26:10 · 689 阅读 · 0 评论 -
osgEarth的Rex引擎原理分析(三十七)osgEarth如何对投影坐标系和大地坐标系进行显示处理的
目标:(二十九)中的问题87osgEarth如何对投影坐标系和大地坐标系进行显示处理的为什么一个能显示成球,一个显示成平面<map name="MBTiles" type="geocentric" version="2"> <options> <profile>epsg:4326</profile>原创 2019-01-01 16:05:19 · 2507 阅读 · 2 评论 -
osgEarth的Rex引擎原理分析(四十八)osgEarth::Drivers::RexTerrainEngine::DrawState的作用
目标:(四十五)中的110每帧都会创建一个DrawState创建在TerrainRenderData::setup(这里存在内存泄漏的问题,因为只有new没有delete,不存在的,_drawState是智能指针,超出范围时会自动销毁,也就是在TerrainRenderData销毁时销毁)osgEarthDrivers/engine_rex/TerrainRenderData....原创 2019-02-17 12:56:00 · 619 阅读 · 0 评论 -
osgEarth的Rex引擎原理分析(五十二)CGCS2000与WGS84坐标系的比较
目标:(四十六)中的119文章《2000中国大地坐标系及其与WGS84的比较》对此有详细的比较https://max.book118.com/html/2017/0614/114928909.shtm结论是:实现上相容的(仅在扁率上有微小差异);精度上是一致的。...原创 2019-05-25 20:33:15 · 1051 阅读 · 0 评论 -
osgEarth的Rex引擎原理分析(五十二)osgEarth::VirtualProgram默认出现在哪些位置
目标:(五十一)中的问题121默认出现在五个地方:1、osgEarth::Drivers::RexTerrainEngine::RexTerrainEngineNode节点会设置VirtualProgram,该vp是抽象的,也就是能够被继承使用,在自身节点的渲染中不会起作用osgEarthDrivers/engine_rex/RexTerrainEngineNode.cppRexT...原创 2019-07-11 22:56:41 · 790 阅读 · 0 评论 -
osgEarth的Rex引擎原理分析(五十)rex引擎shader文件中的#pragma vp_entryPoint vp_location等含义
目标:(四十五)中的问题114#pragma vp_entryPointvp_location指示该shader是顶点shader还是片段shader,以及在相应着色器中的位置。比如"vertex_model"表示在顶点着色器的模型处理阶段,"vertex_view"表示在顶点着色器的视图处理阶段,"vertex_clip"表示在顶点着色器的裁剪/投影处理阶段;"tess_contr...原创 2019-02-21 22:08:31 · 994 阅读 · 0 评论 -
osgEarth使用对数深度缓存
使用对数深度缓存可以在一定程度上解决z冲突(Z-Fighting),osgEarth也支持使用对数深度缓存,方法是: if ( useLogDepth ) { OE_INFO << LC << "Activating logarithmic depth buffer (vertex-only) on main camera" <&l...原创 2019-01-22 06:03:09 · 2478 阅读 · 0 评论 -
osgEarth的Rex引擎原理分析(二十四)TileNode节点下的场景树分析
目标:(十八)中的问题54osgEarth::Drivers::RexTerrainEngine::TileNode是rex引擎下的一个重要节点,这个节点还不是真正在Earth中看到的瓦片,其内部还有场景树,具体包括一个SurfaceNode和四个下一级LOD的TileNode子节点。SurfaceNode负责本级瓦片的渲染,结构如下:osgEarth::Drivers::RexTerra...原创 2018-11-24 17:43:37 · 528 阅读 · 0 评论 -
osgEarth的Rex引擎原理分析(二十七)绑定渲染器的作用
目标:(十二)中的问题25应该是渲染采样器的绑定,这里绑定应该理解为是否为采样器保留了纹理单元,采样器包含COLOR、CLOLOR_PARENT、ELEVATION、NORMAL、CONVERAGE和SHARED五种。大概流程是这样的,rex引擎在setMap时进行绑定初始化,一般都会对五种采样器都进行绑定的,rex的渲染采样器绑定完成后对TileNode设置渲染模型有指导作用。每个T...原创 2018-11-25 07:42:25 · 460 阅读 · 0 评论 -
osgEarth的Rex引擎原理分析(二十八)活跃瓦片寄存器的作用
目标:(十二)中的问题18翻译为活跃瓦片注册表应该更合适RexTerrainEngineNode中的_liveTiles是osgEarth::Drivers::RexTerrainEngine::TileNodeRegistry,在setMap时创建这个_liveTiles,并放入上下文环境,并随上下文环境在其它地方使用,比如:TileNode的create函数中活跃瓦片寄存器负责管理...原创 2018-11-25 11:59:04 · 395 阅读 · 0 评论 -
osgEarth的Rex引擎原理分析(三十二)请求四个状态的含义(IDLE RUNNING MERGING FINISHED)
目标:(二十三)中问题75请求经过PagerLoader加载时初始化为RUNNINGosgEarthDrivers/engine_rex/Loader.cppboolPagerLoader::load(Loader::Request* request, float priority, osg::NodeVisitor& nv){ request->setSta...原创 2018-12-23 06:47:19 · 472 阅读 · 0 评论 -
osgEarth的Rex引擎原理分析(三十三)分页瓦片卸载器子节点的作用
目标:(十二)中的问题22分页瓦片卸载器是在Rex引擎的setMap函数中创建的,创建之初就关联了活跃瓦片寄存器和资源释放器。作用见下面分析。osgEarthDrivers/engine_rex/RexTerrainEngineNode.cppvoidRexTerrainEngineNode::setMap(const Map* map, const TerrainOptions&a...原创 2019-01-01 08:21:54 · 557 阅读 · 0 评论 -
osgEarth的Rex引擎原理分析(四十一)osg::State和osg::StateSet的关系
目标:(三十四)中的101osg::State是osg封装的opengl状态机,是全局的。osg状态机会在各个StateSet中切换,以完成图形的绘制。osg/State/** Encapsulates the current applied OpenGL modes, attributes and vertex arrays settings, * implements lazy...原创 2019-01-13 07:25:44 · 1024 阅读 · 0 评论 -
osgEarth的Rex引擎原理分析(三十四)资源释放器子节点的作用
目标:(十二)中的问题19资源释放器器子节点在rex引擎的setMap中创建,用于释放过期对象的opengl资源osgEarthDrivers/engine_rex/RexTerrainEngineNode.cppvoidRexTerrainEngineNode::setMap(const Map* map, const TerrainOptions& options){...原创 2019-01-01 15:59:37 · 852 阅读 · 0 评论 -
osgEarth的Rex引擎原理分析(三十六)为什么要删除设置过的垂直水准面
目标:(二十九)中的问题86椭球体 水平面 应该不是删除,而是信息创建出一个没有垂直水准面的Profile 待继续分析列表:9、earth文件中都有哪些options((九)中问题)10、如何根据earth文件options创建不同的地理信息引擎节点((九)中问题)11、rex地理信息引擎的四梁八柱((九)中问题)12、osgEarth::Terra...原创 2019-01-01 16:03:25 · 384 阅读 · 0 评论 -
osgEarth的Rex引擎原理分析(四十三)osgEarth的Geographic、Geodetic、Geocentric和Project的关系
目标:(三十六)中的103Geographic采用经纬高,高度是平均海平面高(需要有垂直水准面辅助)Geodetic采用经纬高,高度是相对椭球体的法线高ECEF(也即Geocentric)采用地心直角坐标系XYZProject采用投影坐标系 osgEarth/SpatialReference class OSGEARTH_EXPORT SpatialRefere...原创 2019-01-13 16:25:33 · 1787 阅读 · 0 评论 -
osgEarth的Rex引擎原理分析(三十一)osgEarth::TerrainLayer中的_memCache(osgEarth::MemCache)详解
目标:(二十一)中的问题66继承关系:osgEarth::Cache osgEarth::MemCachecache中的数据是通过cachebin来实现存放的,cachebin有两种,继承关系为:osgEarth::CacheBin MemCacheBin(osgEarth/MemCache.cpp)在osgEarth::Cache中有维护这osgEart...原创 2018-12-09 07:04:55 · 789 阅读 · 2 评论