zoukankan      html  css  js  c++  java
  • Starling位图使用

    转自: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进行大小的粗略统计.

  • 相关阅读:
    Redis集群(一)
    Mysql分库分表
    Redisson分布式锁
    Spring Cloud Eureka 高可用
    Spring RestTemplate具备负载均衡功能
    Redis分布式锁
    B树/B-树/B+树/B*树的数据库应用
    ABAC访问控制模型
    Maven自定义打包的包名
    Versions maven plugin 修改版本
  • 原文地址:https://www.cnblogs.com/sevenyuan/p/3010270.html
Copyright © 2011-2022 走看看