欢迎来到天天文库
浏览记录
ID:11490837
大小:73.00 KB
页数:19页
时间:2018-07-12
《worldwind学习系列十》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、WorldWind学习系列十:RendableObject中的DirectX渲染分析——ImageLayer为例 学习WW有一段时间了,但是若想开发自己基于WW的插件,必然会遇到RendableObject中的DirectX渲染问题。所有需要渲染绘制的WW三维插件,最终是通过继承RendableObject并实现自己的Initialize()、Update()、Render()方法的。想写自己的Render()方法不是简单的事情,你必然要学习DirectX编程,否则,你连看懂示例中的底层Render()方法都很难,谈何开发自己
2、的插件。 为了突破DirectX编程对我学习WW插件的阻挠,我“快餐式”地突击学习了DirectX,对基本流程和基本原理有了一定认识。今天下午我也对BMNG插件中RendableObject子类——ImageLayer为例进行了分析学习。现在与大家分享一下。注:请务必先学过Direct3D学习(资料收集),否则看下面的内容无异于浪费你宝贵的时间。 ImageLayer重载实现的Initialize()方法。Initialize方法代码 /// /// Layer initial
3、ization code /// public override void Initialize(DrawArgs drawArgs) { try { //获取绘制设备对象 this.device = drawArgs.device; if(_imagePath == null && _imageUrl != null && _imageUrl.To
4、Lower().StartsWith("http://")) { //根据URL地址,在本地构建同样层次的文件夹路径。这里有个知识点getFilePathFromUrl()方法,自己定位学习 _imagePath = getFilePathFromUrl(_imageUrl); } FileInfo imageFileInfo = null;
5、 if(_imagePath != null) imageFileInfo = new FileInfo(_imagePath); if(downloadThread != null && downloadThread.IsAlive) return; if(_imagePath != null && cacheExpiratio
6、n != TimeSpan.MaxValue && cacheExpiration.TotalMilliseconds > 0 && _imageUrl.ToLower().StartsWith("http://") && imageFileInfo != null && imageFileInfo.Exists && imageFileI
7、nfo.LastWriteTime < System.DateTime.Now - cacheExpiration) { //attempt to redownload it //启用新线程,下载影像图片。我稍后分析DownloadImage()方法,是重点之一 downloadThread = new Thread(new ThreadStart(DownloadImage));
8、 downloadThread.Name = "ImageLayer.DownloadImage"; downloadThread.IsBackground
此文档下载收益归作者所有