WorldWind源码剖析系列:表面瓦片类SurfaceTile
表面瓦片类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等类。