四叉树瓦片集合类QuadTileSet是影像瓦片渲染的主要类。使用地形管理器来为3D地形渲染查询高程值。依赖于用来刷新基于经度、纬度、视角范围瓦片的更新线程。该类继承自可渲染对象类RenderableObject。该类的类图如下。

四叉树瓦片集合类QuadTileSet提供的主要字段、属性和方法简要描述如下:

bool m_RenderStruts = true;//渲染标记层

protected string m_ServerLogoFilePath; //服务器Logo文件路径

protected Image m_ServerLogoImage; //服务器Logo影像

protected Hashtable m_topmostTiles = new Hashtable();//最上层瓦片哈希表,其中,key= ((long)curRow << 32) + curCol,value= QuadTile对象。

protected double m_north; //瓦片集合北边界,单位:角度

protected double m_south; //瓦片集合南边界

protected double m_west; //瓦片集合西边界

protected double m_east; //瓦片集合东边界

bool renderFileNames = false; //渲染的文件名称

protected Texture m_iconTexture; //icon格式的纹理

protected Sprite sprite; //渲染精灵,详情请参阅Direct3D相关内容

protected Rectangle m_spriteSize; //渲染精灵的尺寸

protected ProgressBar progressBar; //进度条

protected Blend m_sourceBlend = Blend.BlendFactor; //源影像混合方式

protected Blend m_destinationBlend=Blend.InvBlendFactor;//目的影像混合方式。多层文理混合时需要指定这两个参数,详情请参阅Direct3D相关内容。

protected static long lastRenderTime;//最后的渲染时间。如果该值等于CurrentFrameStartTicks,则需要清除Z-buffer缓冲区。

//public static int MaxConcurrentDownloads = 3;

protected double m_layerRadius;//图层半径,等于星球半径+瓦片高于地表的距离

protected bool m_alwaysRenderBaseTiles;//一直需要渲染的基本瓦片

protected float m_tileDrawSpread; //瓦片绘制范围

protected float m_tileDrawDistance; //瓦片绘制距离

protected bool m_isDownloadingElevation; //是否是正在下载的高程数据

protected int m_numberRetries; //重试次数

protected Hashtable m_downloadRequests = new Hashtable();//下载请求,其中,key= QuadTile对象,value= GeoSpatialDownloadRequest对象。

protected int m_maxQueueSize = 400; //下载队列最大数目

protected bool m_terrainMapped; //是否启用地形映射

protected ImageStore[] m_imageStores; / /存储影像数组

protected Camera.CameraBase m_camera;//与四叉树瓦片集合关联的相机

protected GeoSpatialDownloadRequest[] m_activeDownloads = new GeoSpatialDownloadRequest[20]; //活动的下载请求数组

protected DateTime[] m_downloadStarted = new DateTime[20];//下载开始时间

protected TimeSpan m_connectionWaitTime = TimeSpan.FromMinutes(2);//连接等待时间间隔

protected DateTime m_connectionWaitStart; //连接等待的开始时刻

protected bool m_isConnectionWaiting; //是否正处于连接等待中

protected bool m_enableColorKeying; //是否启用颜色??不太懂

protected Effect m_effect = null; //Direct3D的效果

protected string m_effectPath = null;//效果路径

protected string m_effectTechnique = null;//效果技术参数

static protected EffectPool m_effectPool = new EffectPool();//D3D的效果缓存池

protected TimeSpan m_cacheExpirationTime = TimeSpan.MaxValue;//瓦片集合下载缓冲区过期时间间隔

public static Texture DownloadInProgressTexture;//正在下载中的影像纹理

public static Texture DownloadQueuedTexture; //排在下载队列中的纹理

public static Texture DownloadTerrainTexture; //正在下载的地形纹理

public int ColorKey; // default: 100% transparent black = transparent

public int ColorKeyMax;//使用ColorKey设置的最暗的透明颜色值

bool m_renderGrayscale = false;//渲染时的灰度尺度

float m_grayscaleBrightness = 0.0f;// 灰度尺度的亮度

构造函数public QuadTileSet(string name,World parentWorld,double distanceAboveSurface,double north,double south,double west,double east,bool terrainMapped,ImageStore[] imageStores)根据指定的瓦片名称、从属的星球、瓦片高于地表的距离、瓦片集合北边界、南边界、西边界、东边界、是否进行地形映射、影像存储数组等参数实例化一个四叉树瓦片集合对象。

public override void Update(DrawArgs drawArgs)方法根据具体的绘制参数更新渲染场景的地形和影像瓦片数据,内部调用QuadTile.Update(drawArgs)函数。

public override void Render(DrawArgs drawArgs) 方法根据具体的绘制参数完成场景的渲染和绘制功能,内部调用QuadTile. Render (drawArgs)函数。其中,设计到纹理渲染阶段问题,详情请参阅Direct3D相关内容。

protected void RemoveInvisibleTiles(CameraBase camera)根据相机参数camera移除不可见的瓦片

public void ClearDownloadRequests()方法清空下载请求

public void RenderDownloadProgress(DrawArgs drawArgs, GeoSpatialDownloadRequest request, int offset)渲染下载进度

public virtual void ResetCacheForCurrentView(WorldWind.Camera.CameraBase camera)为当前视图重置缓冲区,内部调用QuadTile.ResetCache()函数。

public virtual void AddToDownloadQueue(CameraBase camera, GeoSpatialDownloadRequest newRequest)把下载请求newRequest添加到下载队列中。

public virtual void RemoveFromDownloadQueue(GeoSpatialDownloadRequest removeRequest)从下载对列中移除下载请求。

public virtual void ServiceDownloadQueue()当下载线程可用时开始启动下载任务。内部调用了非抽象类WorldWind.Renderable. GeoSpatialDownloadRequest.StartDownload()函数,以及非抽象类WorldWind.Net.WebDownload。注意区分WorldWind.Net. GeoSpatialDownloadRequest抽象类。

public virtual GeoSpatialDownloadRequest GetClosestDownloadRequest()从下载请求队列中寻找最好的下载请求并返回。

static protected Texture CreateDownloadRectangle(Device device, Color color, int padding)创建一个瓦片下载指示纹理。

WorldWind源码剖析系列:四叉树瓦片集合类QuadTileSet的更多相关文章

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

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

  2. WorldWind源码剖析系列:星球球体的加载与渲染

    WorldWind源码剖析系列:星球球体的加载与渲染 WorldWind中主函数Main()的分析 在文件WorldWind.cs中主函数Main()阐明了WorldWind的初始化运行机制(如图1所 ...

  3. WorldWind源码剖析系列:四叉树瓦片类QuadTile

    四叉树瓦片类QuadTile提供了对影像和地形数据的四叉树访问模型.该类的类图如下. 四叉树瓦片类QuadTile提供的主要字段.属性和方法简要描述如下: public QuadTileSet Qua ...

  4. WorldWind源码剖析系列:表面瓦片类SurfaceTile

    表面瓦片类SurfaceTile描述星球类(如地球)表面纹理影像的瓦片模型.其类图如下. 表面瓦片类SurfaceTile包含的主要的字段.属性和方法如下: int m_Level;//该瓦片所属金字 ...

  5. WorldWind源码剖析系列:影像存储类ImageStore、Nlt影像存储类NltImageStore和WMS影像存储类WmsImageStore

    影像存储类ImageStore 影像存储类ImageStore提供了计算本地影像路径和远程影像影像URL访问的各种接口,是WmsImageStore类和NltImageStore类的基类.当划分完层次 ...

  6. WorldWind源码剖析系列:星球表面渲染类WorldSurfaceRenderer

    星球表面渲染类WorldSurfaceRenderer描述如何渲染星球类(如地球)表面影像纹理.该类的类图如下. 星球类World包含的主要的字段.属性和方法如下: public const int ...

  7. WorldWind源码剖析系列:WorldWind实时确定、更新、初始化和渲染地形和纹理数据

    WorldWind实时确定.更新.初始化和渲染地形和纹理数据 当用户点击WorldWind中的地球时,首先响应的是WorldWindow.OnPaint()函数,后续程序的调用流程如下图所示. 零散知 ...

  8. WorldWind源码剖析系列:表面影像类SurfaceImage

    表面影像类SurfaceImage描述星球类(如地球)表面纹理影像.该类的类图如下. 表面影像类SurfaceImage包含的主要的字段.属性和方法如下: string m_ImageFilePath ...

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

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

随机推荐

  1. 浙大月赛ZOJ Monthly, August 2014

    Abs Problem Time Limit: 2 Seconds Memory Limit: 65536 KB Special Judge Alice and Bob is playing a ga ...

  2. NIO学习笔记五:Buffer 的使用

    Java NIO中的Buffer用于和NIO通道进行交互.数据是从通道读入缓冲区,从缓冲区写入到通道中. 缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存.这块内存被包装成NIO Buffe ...

  3. 【 js 基础 】【读书笔记】Javascript “继承”

    是时候写一写 “继承”了,为什么加引号,因为当你阅读完这篇文章,你会知道,说是 继承 其实是不准确的. 一.类1.传统的面向类的语言中的类:类/继承 描述了一种代码的组织结构形式.举个例子:“汽车”可 ...

  4. 【转】android系统常用URI

    android系统管理联系人的URI如下:ContactsContract.Contacts.CONTENT_URI 管理联系人的UriContactsContract.CommonDataKinds ...

  5. MVC 、JDBC、SQL、DBMS、RDBMS、DDL、DML、DCL

    MVC: 全称:Model View Controller: 解释:模型(model)-视图(view)-控制器(controller) Model(模型)表示应用程序核心(比如数据库记录列表). V ...

  6. HttpClient的用法

    客户端模拟http请求工具 Postmen(谷歌插件).RestClient 服务器模拟http请求工具 httpclient.HttpURLConnection httpCient请求代码 /** ...

  7. Loadrunner脚本优化-参数化之关联MySQL数据库获取数据

    脚本优化-参数化之关联MySQL数据库获取数据 by:授客 QQ:1033553122 测试环境: Loadrunner 11 Win7 64位 实操: 1.   安装MySQL ODBC驱动程序 O ...

  8. 如何借助 HealthKit 打造一款健身应用?

    [编者按]本文作者为 Matthew Maher,文章手把手地介绍了如何借助 HealthKit 建立简单的健身应用,包含诸多代码实例.本文系国内 ITOM 管理平台 OneAPM 编译呈现. 根据新 ...

  9. windows10局域网实现文件共享

    1.共享文件夹设置: 磁盘文件夹,鼠标右键 选择高级共享 如图,自定义选项: 控制面板中添加新用户,一定给设置一个密码(远程登录时候用) 用户: * windows键+R * \\IP地址\目录 * ...

  10. SQL Server 高并发Insert数据解析,实践

    在现实的生产环境中,有可能遇到高并发insert的应用.在此应用时由于堆表(Heap)和聚集表的结构不同导致在高并发的情形下insert效率不尽相同.接下来我会简单的以测试用例来简要说明.并举例说明如 ...