表面瓦片类SurfaceTile描述星球类(如地球)表面纹理影像的瓦片模型。其类图如下。

表面瓦片类SurfaceTile包含的主要的字段、属性和方法如下:

int m_Level;//该瓦片所属金字塔影像的层级

double m_North;//该瓦片北边界

double m_South; //该瓦片南边界

double m_West; //该瓦片西边界

double m_East; //该瓦片东边界

bool m_Initialized = false; //该瓦片是否已被初始化

Device m_Device = null; //渲染该瓦片的设备对象

Texture m_RenderTexture = null; //该瓦片所关联的纹理影像

float[,] m_HeightData = null; //存储该瓦片所覆盖区域的高程数据的二维数组

CustomVertex.TransformedColoredTextured[] m_RenderToTextureVertices = new CustomVertex.TransformedColoredTextured[4];//待渲染的纹理顶点坐标

DynamicTexture m_DynamicTexture = null;//该瓦片所包含的动态纹理

bool m_RequiresUpdate = false;//标志该瓦片是否需要更新

float m_VerticalExaggeration = float.NaN;//该瓦片的竖直放大率

System.DateTime m_LastUpdate = System.DateTime.Now;//瓦片最后更新时间

WorldSurfaceRenderer m_ParentWorldSurfaceRenderer;//该瓦片所绑定的星球表面渲染类对象

BoundingBox m_BoundingBox;//该瓦片的外包围盒

short[] m_NwIndices = null;//该瓦片的西北顶点数组

short[] m_NeIndices = null;//该瓦片的东北顶点数组

short[] m_SwIndices = null;//该瓦片的西南顶点数组

short[] m_SeIndices = null;//该瓦片的东南顶点数组

SurfaceTile m_NorthWestChild;//该瓦片的西北孩子瓦片

SurfaceTile m_NorthEastChild;//该瓦片的东北孩子瓦片

SurfaceTile m_SouthWestChild;//该瓦片的西南孩子瓦片

SurfaceTile m_SouthEastChild;//该瓦片的东南孩子瓦片

short[] m_IndicesElevated;// 该瓦片的高程索引数组

该类的方法都比较简单,不再赘述,有兴趣的读者可以阅读源码。感兴趣的读者可以直接阅读源码。建议阅读源码之前读者应具备一定的DirectX3D开发基础。

调用关系:

1)    SurfaceTile内部引用了SurfaceImage、WorldSurfaceRenderer 、TerrainTile、BoundingBox、DynamicTexture等类。

2)    TerrainTileService内部引用了TerrainTile等类。

3)    TerrainTile内部也引用了TerrainTileService、TerrainDownloadRequest等类。

4)    TerrainAccessor内部引用了TerrainTile等类。

5)    World派生于RenderableObject类,内部引用了WorldSettings、SettingsBase 、DrawArgs 、MathEngine 、TerrainAccessor、RenderableObjectList、WorldSurfaceRenderer、Quaternion 、ProjectedVectorRenderer、AtmosphericScatteringSphere、MeshSubset 、RenderableObject、SunCalculator、Frustum、ImageHelper 、RenderPriority、Angle、CameraBase等类。

WorldWind源码剖析系列:表面瓦片类SurfaceTile的更多相关文章

  1. WorldWind源码剖析系列:设置类SettingsBase

    PluginSDK中的星球设置类WorldSettings 和WorldWind.程序设置类WorldWindSettings均继承自父类SettingsBase.类图如下所示.其中父类Setting ...

  2. WorldWind源码剖析系列:挂件类Widgets

    WorldWindow用户定制控件类中所包含的的挂件类Widgets控件主要有如下图所示的派生类.它们的类图如下所示. 鉴于挂件类Widgets及其派生类,相对简单,基本上都是些利用DirectX3D ...

  3. WorldWind源码剖析系列:BMNG类构造函数深入分析

    BMNG构造函数深入分析 一.主要类图 二.主要功能: 1)        BMNG类 BMNG类将包含以“Blue Marble”为主题的所有可渲染影像的根节点添加到当前星球的可渲染对象列表中,包括 ...

  4. WorldWind源码剖析系列:插件类Plugin、插件信息类PluginInfo和插件编译器类PluginCompiler

    插件类Plugin是所有由插件编译器加载的插件子类的抽象父类,提供对插件的轻量级的访问控制功能. 插件信息类PluginInfo用来存储关于某个插件的信息的类,可以理解为对插件类Plugin类的进一步 ...

  5. WorldWind源码剖析系列:日志类Log

    Utility工程中的日志类Log主要用来输出Debug状态下的调试信息.该类的类图如下: 日志类Log中使用到的类和内嵌结构体类型主要有以下这些: public class LogEventArgs ...

  6. WorldWind源码剖析系列:相机类CameraBase

    相机基类CameraBase PluginSDK中的相机类CameraBase是三维计算机图形学中的概念.观察者在三维场景中漫游时,通过眼睛看到的场景和相机拍摄过程非常一致.实际上,Direct3D和 ...

  7. WorldWind源码剖析系列:角度类Angle

    PluginSDK中的角度结构体Angle类图如下所示. 角度结构体主要定义了一个弧度表示角度值的字段:double Radians.还有几个表示角度最大值.最小值.非数值和零角度等字段.定义了一个D ...

  8. WorldWind源码剖析系列:缓冲类Cache

    缓冲类Cache主要用于在最小的限制条件下保存从远程服务器通过网络下载下来的地理空间数据,以便当用户处于离线状态时能够使用这些已经缓冲好的数据.Google Earth也采用类似机制处理用户离线浏览漫 ...

  9. WorldWind源码剖析系列:四元数类Quaternion

    PluginSDK中的Quaternion4d类可能是感觉Microsoft.DirectX. Quaternion类不太实用或不够用,自己有重新写的. 四元数是英国数学家哈密顿(W.R.Hamilt ...

  10. WorldWind源码剖析系列:星球类World

    星球类World代表通用的星球类,因为可能需要绘制除地球之外的其它星球,如月球.火星等.该类的类图如下. 需要说明的是,在WorldWind中星球球体的渲染和经纬网格的渲染时分别绘制的.经纬网格的渲染 ...

随机推荐

  1. linux7 安装GitLab

    1.安装Linux虚拟机-- 安装后配置a.停止防火墙# systemctl stop firewalld.service# systemctl disable firewalld.service# ...

  2. vue-infinite-loading2.0 中文文档

    简介 这是一个使用在Vue.js中的无限滚动插件,它可以帮助你快速创建一个无限滚动列表. 特点 移动端支持友好 兼容任何一个可以滚动的元素 有不同的旋转器可以作为加载动画 支持加载后显示结果 支持两个 ...

  3. SPOJ7001(SummerTrainingDay04-N 莫比乌斯反演)

    Visible Lattice Points Consider a N*N*N lattice. One corner is at (0,0,0) and the opposite one is at ...

  4. JS笔记--------预编译,闭包和作用域

    (一)JS预编译四部曲: 1,创建AO对象. 2,找形参和变量声明,将变量和新参名作为AO属性名,值为undefined. 3,将实参值和形参值统一. 4,在函数体里找函数声明,值赋给函数体. (二) ...

  5. Google AdSense怎么在新窗口打开

    Google AdSense早在十年前就支持在新窗口打开了,为什么我的AdSense广告还在当前页面打开? 德顺查了一下,发现最早在2007年就有网站记载,谷歌AdSense开始试验新窗口打开功能. ...

  6. 用windows浏览器打开Linux的Jupyter notebook开发、调试示例

    1.场景,在windows浏览器中打开Linux环境下的jupyter notebook.Jupyter notebook开启远程服务,Spark.python计算环境在Linux服务器中,而工作环境 ...

  7. [基础架构]PeopleSoft Web Server 重要文件说明

    我们都知道PeopleSoft是由几个不同的服务组成的,他们在PeopleSoft体系结构中扮演着自己的角色.这些服务具有不同的文件结构并包含重要的可执行文件和配置文件. 以下是Peoplesoft体 ...

  8. SurfaceView获取本地视频播放

    1.定义 可以直接从内存或者DMA等硬件接口取得图像数据,是个非常重要的绘图容器. 它的特性是:可以在主线程之外的线程中向屏幕绘图上.这样可以避免画图任务繁重的时候造成主线程阻塞,从而提高了程序的反应 ...

  9. C语言中数据类型的本质

    数据类型可以理解为固定内存大小的别名.比如int类型,就是表示占用4字节的内存. 1 数据类型的大小 用sizeof操作符获得数据类型的大小. 比如 int a[5];   sizeof(a)就可以得 ...

  10. CentOS6.8系统安装Node

    环境:CentOS6.8_X64系统 一.到官方下载最新的编译好的安装文件,目前是6.9.4. $>cd /usr/local/src #定位到这个目录,下载的文件会在这个目录#使用wget下载 ...