转自: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进行大小的粗略统计.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 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的设计模式综述