智慧 + 毅力 = 无所不能

正确性、健壮性、可靠性、效率、易用性、可读性、可复用性、兼容性、可移植性...
随笔 - 991, 文章 - 0, 评论 - 27, 阅读 - 341万

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

Starling位图使用

Posted on   Bill Yuan  阅读(2241)  评论(0编辑  收藏  举报

转自:http://yanda20056.blog.163.com/blog/static/56501931201202953143469/

一般使用starling时,是用位图进行动画表现的,starling也是调用

flash.display3D.textures.Texture.uploadFromBitmapData(source:BitmapData, miplevel:uint=0):void 

这个方法将位图作为材质传入到了显存中. 但为了能在传入时做到最快,要注意一下几点:

1: 

 

starling.textures.Texture.fromBitmapData(data:BitmapData, generateMipMaps:Boolean=true, optimizeForRenderTexture:Boolean=false):Texture 

 

这个方法是接收一个bitmapdata作为starling的Texture.美工提供的图片大小最好和以下级别一致(单位制像素): 1X1,2X2,4X4,8X8,16X16,32X32,64X64,128X128,256X256,512X512,1024X1024,2048X2048. 不要超过2048. 因为FP11为了提供统一接口,既支持openGL又支持DirectX,但openGL对材质的大小要求是2的幂(directX不是), 如过你的材质大小是65X128,则它分配的显存空间依然是按照128X128(64的下一级)来进行分配,所以FP11就要求必须传入的bitmapData的大小是2的幂才能同时满足两种类型的显卡,如果离上面的尺寸标准相差越大就越浪费显存, starling在该方法中进行的自动的判断和扩充,所以当不等于以上尺寸时,它会产生一个新的bitmapdata,并copyPixels,所以这里会浪费拷贝的时间. 当位图完全符合以上尺寸时,速度所有提升.

2: 它的第二个参数表示的是否设置mipMap(3D中用于缩放画面时加快图像缩放运算的一种方式), 但一般用starling开发的游戏是2D游戏,如果不需要用到缩放,则在调用此番那个发时,应该显示的指定为false. 该方法会继续调用starling.textures.Texture.uploadTexture(data:BitmapData, texture:Texture, generateMipmaps:Boolean):void 方法. 这个方法中会根据generateMipmaps是否为true来自动产生新的小于当前大小级别的所有级别的材质.
例如: 即便当前图片大小是16X16,但generateMipmaps为true,那么它会在uploadTexture()方法中会再多产生1X1,2X2,4X4,8X8这几种大小的bitmapdata,并用draw的方式从原始图片上进行绘制,并进行缩放一半. 
draw会消耗很多性能,所以当不需要时,完全可以将generateMipmaps设置为false.

3: starling.textures.Texture在产生后,如果要重复利用,最好保存在内存中(如果用C++直接操作显存,可以直接从显存中获取材质,并重复利用,但starling或FP11,我还不知道怎么直接从显存中获取引用...),以便下次直接利用. 如果是临时用的,要进行dispose(). 如果要彻底销毁一个材质:
texture.dispose();
    if(texture is SubTexture){
     (texture as SubTexture).parent.dispose(); 
    }

4: FP11,最大支持的材质在显存中的占用是350M,所以要注意. 可以用ByteArray对当前你使用的starling.textures.Texture进行大小的粗略统计.

(评论功能已被禁用)
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示