影像图层类ImageLayer

影像图层类ImageLayer将单张影像作为纹理映射到星球表面上去。源影像必须是平面笛卡尔坐标系。该类的类图如下。

影像图层类ImageLayer提供的主要字段、属性和方法简要描述如下:

protected double layerRadius;//图层半径,实际是添加影像纹理的星球半径

protected double minLat; //图层的最小纬度

protected double maxLat; //图层的最大纬度

protected double minLon; //图层的最小经度

protected double maxLon;//图层的最大经度

World m_ParentWorld;//图层所从属的星球对象

Stream m_TextureStream = null;//图层所包含的纹理数据流

protected bool _disableZbuffer;//是否对影像纹理图层启用Zbuffer缓冲

protected CustomVertex.PositionNormalTextured[] vertices;//将影像映射成纹理时所对应的含法线、纹理的位置坐标

protected static CustomVertex.TransformedColored[] progressBarOutline = new CustomVertex.TransformedColored[5];

protected static CustomVertex.TransformedColored[] progressBar = new CustomVertex.TransformedColored[4];

protected short[] indices;//使用索引缓存,减少内存使用并加速渲染

protected Texture texture;//从影像创建的纹理对象

protected Device device;//渲染纹理的设备

protected string _imageUrl; //纹理影像的URL字符串

protected string _imagePath; //纹理影像的路径

protected int meshPointCount = 64;//将纹理影像剖分的三角形格网点密度

protected TerrainAccessor _terrainAccessor;//影像纹理的地形访问器

protected int progressBarBackColor = System.Drawing.Color.FromArgb(100, 255, 255, 255).ToArgb();//进度条的背景颜色

protected int progressBarOutlineColor = System.Drawing.Color.SlateGray.ToArgb();//进度条的外轮廓颜色

protected int textColor = System.Drawing.Color.Black.ToArgb();

protected float downloadPercent;//下载文理影像完成的百分比

protected Thread downloadThread;//下载文理影像的线程

protected float verticalExaggeration;//纹理的竖直放大率

protected string m_legendImagePath;//图例影像路径

protected Colorbar legendControl; //颜色条图例控件窗体

int m_TransparentColor = 0;//透明区域的颜色

bool m_renderGrayscale = false;//是否灰度渲染

TimeSpan cacheExpiration = TimeSpan.MaxValue;缓冲区过期时间段

System.Timers.Timer refreshTimer = null;//刷新定时器

float m_grayscaleBrightness = 0.0f;//灰度尺度的透明度

static Effect grayscaleEffect = null;//启用效果对象

public override void Initialize(DrawArgs drawArgs):重载父类方法,根据URL创建下载线程、创建格网等。

public override void Update(DrawArgs drawArgs) :重载父类方法,根据绘制参数更新状态。

public override void Render(DrawArgs drawArgs) :重载父类方法,根据绘制参数完成影像图层的渲染。

protected virtual void CreateMesh():创建了Device最终渲染三角面格网所需要的点集合,即 protected CustomVertex.PositionNormalTextured[] vertices,并为构成三角形格网的每一个顶点指定顶点索引即protected short[] indices。同时使用顶点缓存和索引缓存,可以减少内存使用并加速渲染。

protected void DownloadImage():下载线程所绑定的处理函数,内部构造网络下载WebDownload对象来发起网络下载,并为该对象的“正在下载中事件”指定处理函数,以便在进度条中显示下载百分比。其中,当_imagePath为空时,将下载的文件放到内存中,然后ImageHelper类从流对象加载转变为纹理对象;当_imagePath不为空时,将加载的文件保存到——imagePath中,然后加载更新纹理;最后再调用CreateMesh()创建Mesh。

private static string getFilePathFromUrl(string url):从URL字符串中获取文件路径。

private void calculate_normals(ref CustomVertex.PositionNormalTextured[] vertices, short[] indices):计算格网顶点的法线,在光照状态下要用到法线。

最新文章

  1. ajax 同步和异步
  2. Webix JavaScript UI 库可以帮你构建跨平台的HTML5 和 CSS3 程序
  3. mysql为表添加外键完成性约束 报错Can't create table 'sfkbbs.#sql-513_25' (errno: 150)
  4. MATLAB 图像处理——Contrast Enhancement Techniques
  5. 完整学习git三 查看暂存区目录树 git diff
  6. spring BeanFactory概述
  7. Google jQuery URL
  8. Css元素居中设置
  9. Chrome DevTools 开发者工具 技巧 调试
  10. android 使用Vysor投影到电脑
  11. 学习--->更新集合/内存/深浅拷贝
  12. 利用CodeDom 动态执行条件表达式
  13. HTML5 播放器
  14. 论文阅读笔记三十七:Grid R-CNN(CVPR2018)
  15. 【读书笔记】iOS-UI Automation 需要遵守的规则
  16. caffe生成log日志
  17. Android 开发工具类 36_ getSimSerial
  18. 解决Redisson出现Failed to instantiate [org.redisson.api.RedissonClient]: Factory method 'create' threw exception; nested exception is java.lang.ArrayIndexOutOfBoundsException: 0的问题
  19. python闭包,看不懂请揍我
  20. Android (争取做到)最全的底部导航栏实现方法

热门文章

  1. Java枚举的下标值
  2. Java虚拟机 - 多态性实现机制
  3. php7 AES IOS Android
  4. linux7 安装SVN
  5. pycharm 光标快速移动到括号外或行尾
  6. js-JavaScript常见的创建对象的几种方式
  7. ES6--JavaScript的第六个版本
  8. SQLServer 学习笔记之超详细基础SQL语句 Part 5
  9. 检测到在集成的托管管道模式下不适用的ASP.NET设置
  10. Java语言的特点以及Java与C/C++的异同