Silverlight C# 游戏开发:资源的处理,图像算法(一)

简介:

这是一篇暴力的内容,所讲之主题虽然可以为Silverlight游戏开发解决一些问题,但是同样也会带来新的其他问题,于是,有意思的事情出现了,到底该怎么选择呢?还是依据你的项目进行选取吧,本文纯粹使用代码方式编程,请准备好Visual Studio,不需要Expression。

  游戏开发在开始的时候一般不会注意一个重要的细节,就是“特效”,角色也好,场景也罢,可能都不会是最占用磁盘空间的资源,特效资源,包含了技能释放的、场景中的,甚至升级也得显示光环的,更何况有那种收费的全屏“求交往”特效,如此之多如此之大的资源包绝对够咱们头疼的了,那么,今天提供一个算法来为咱们的Silverlight特效资源大瘦身,今次我们只讨论有透明的那种特效,没有透明的特效直接使用关键色镂空即可。

  首先表明特效一定是图片动画序列,以目前的技术来说使用XAML做特效不太实际,一方面特效太过复杂,使用矢量来做成本很不划算,另一方面所产出特效的绘制工作效率不及直接用特效工具来做的快又好看(想象一下每个特效20多帧的恐怖状况吧),最后一个方面,这方面的人才几乎完全没有。

  那么,我们一起看看一个特效大概会有多大:

 

  这个规格是一个简单的爆破特效,由于使用了半透明,所以只能使用PNG的方式来做,不能用关键色镂空,一共20张512*512图片787KB,接近1MB,那么好,打个包还有752KB,很显然,无论是动态载入还是跟随发布包一起,都是一个及其占用磁盘空间的做法,另外一个角度上就是带宽和内存的占用,如果说可以将这个特效减少到只有100多KB,那就非常爽了。

  使用JPG来代替PNG就能直接达到这个瘦身效果,同等的特效只有163KB。

 

  可是问题来了,jpg毕竟是jpg,没有png的半透明效果,我们分析一下要想达到类似的效果如何进行处理,参看下图:

 

 

 

  分析一下,可以得到一个简单的结论,就是颜色越黑,越是我们不需要的,而颜色越亮就越有保存的价值,那么以此可以推导,是否可以通过颜色的色值来看这个颜色的保存价值?答案是可以的,在图像存储中(尤其是最近几年)颜色以32位方式处理为主,所表示的颜色是8个F,FF FF FF FF,分别代表了ARGB——Alpha、Red、Green、Blue,A是透明度,RGB组成了16777215种颜色,而色值越大颜色就越接近白色,色值越小就越接近黑色,那么,我们是否可以一个平均方法来取得色彩到底是接近于黑还是白?算法如下:RGB三色相加平均数就是A的数值,这样,黑色将被完全去掉,但不会影响那些接近于黑色的颜色,这样的颜色因为接近于黑,所以透明度也是很高,而我们的特效部分则是以亮光为主,透明度自然就很低了。

  按照我们的想法实现的效果如下:

 

 

 

  
 

  请直接参看Silverlight中的效果,如果运行源代码请在载入完成后10秒后点击“开始处理”,这是非常暴力的处理过程,所以请做好心里准备^0^

 

源代码在这里下载,在这个程序里,可以研究如何载入一个JPG图片的列表,然后将其处理成为程序内可用的特效,这个应用对于特效来说至关重要,它能很好节省图片空间,但是问题也很明显,处理过程是相当的慢,我使用了一个行为队列,才不至于直接“卡”在程序运行过程当中,如果你觉得更加暴力一些,可以一次处理完,但将是一个非常消耗系统的过程,如果在游戏开发中应用,还需要改进算法,以及处理流程,比如预先加载和处理,或者分散计算,但无论如何都是一个非常不爽的过程,最好对于算法可以修正的更加优美,下面的选取部分就是关键代码,算法上还需要从这上面入手了:)

 

这一次,我们只是仅仅探讨了一种可以在游戏当中对于特效处理的应用方法,高手应该看到处理的效率,我这是纯粹的暴力解决方案,可能还有更加巧妙的方式来达到我们期望的效果,但是以我的水平还未寻得好路子,要是有什么好的方法或者算法,大家互相交流一下,下一次我们一起研究一些图片处理上的其他算法,仍然很!暴!力!



本文转自nowpaper 51CTO博客,原文链接:http://blog.51cto.com/nowpaper/712471

相关文章
|
3月前
|
存储 监控 算法
电脑监控管理中的 C# 哈希表进程资源索引算法
哈希表凭借O(1)查询效率、动态增删性能及低内存开销,适配电脑监控系统对进程资源数据的实时索引需求。通过定制哈希函数与链地址法冲突解决,实现高效进程状态追踪与异常预警。
209 10
|
3月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
380 0
|
5月前
|
编解码 算法
改进SIFT算法实现光学图像和SAR图像配准
改进SIFT算法实现光学图像和SAR图像配准
|
3月前
|
机器学习/深度学习 算法 自动驾驶
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
219 8
|
3月前
|
存储 机器学习/深度学习 监控
网络管理监控软件的 C# 区间树性能阈值查询算法
针对网络管理监控软件的高效区间查询需求,本文提出基于区间树的优化方案。传统线性遍历效率低,10万条数据查询超800ms,难以满足实时性要求。区间树以平衡二叉搜索树结构,结合节点最大值剪枝策略,将查询复杂度从O(N)降至O(logN+K),显著提升性能。通过C#实现,支持按指标类型分组建树、增量插入与多维度联合查询,在10万记录下查询耗时仅约2.8ms,内存占用降低35%。测试表明,该方案有效解决高负载场景下的响应延迟问题,助力管理员快速定位异常设备,提升运维效率与系统稳定性。
248 4
|
4月前
|
存储 监控 算法
基于文化优化算法图像量化(Matlab代码实现)
基于文化优化算法图像量化(Matlab代码实现)
146 1
|
4月前
|
存储 算法 生物认证
基于Zhang-Suen算法的图像细化处理FPGA实现,包含testbench和matlab验证程序
本项目基于Zhang-Suen算法实现图像细化处理,支持FPGA与MATLAB双平台验证。通过对比,FPGA细化效果与MATLAB一致,可有效减少图像数据量,便于后续识别与矢量化处理。算法适用于字符识别、指纹识别等领域,配套完整仿真代码及操作说明。
|
4月前
|
机器学习/深度学习 监控 并行计算
【图像增强】局部对比度增强的CLAHE算法直方图增强研究(Matlab代码实现)
【图像增强】局部对比度增强的CLAHE算法直方图增强研究(Matlab代码实现)
483 0
|
6月前
|
机器学习/深度学习 监控 算法
基于单尺度Retinex和多尺度Retinex的图像增强算法实现
基于单尺度Retinex(SSR)和多尺度Retinex(MSR)的图像增强算法实现
714 1
|
6月前
|
存储 算法 数据安全/隐私保护
基于FPGA的图像退化算法verilog实现,分别实现横向和纵向运动模糊,包括tb和MATLAB辅助验证
本项目基于FPGA实现图像运动模糊算法,包含横向与纵向模糊处理流程。使用Vivado 2019.2与MATLAB 2022A,通过一维卷积模拟点扩散函数,完成图像退化处理,并可在MATLAB中预览效果。

热门文章

最新文章