之前在项目中贴图大量使用了 PNG 和 jpg 遇到了个问题。在使用BitmapTexture的时候发现 是必须MIP 不管你 是否开启或者关闭 MIP 他都会去创建。而每次MIP都会根据贴图大小去生成不同级别的 材质 比如说 512 * 512 映射的结果是 256 * 256 、128 * 128、64*64、32*32、16*16...等等然后依次uploadFromBitmapData;这个过程效率极低。如果强行不然它做MIP效果巨丑无比。 后来研究了一下DDS,DDS在端游里使用的比较多 因为 DDS里自带了 MIP。在flash里 这种格式解析开销本身就很大,还得靠CPU去解压。得不偿失!经过一番折腾,决定采用ATF。

  ATF是Stage3D 默认支持的格式 这种格式是不需要在CPU上做 MIP的同时还支持异步上传处理。这样一来CPU压力是减少了但是上传比较大的贴图时间还是很长。flash 的帧频也会受到影响。然后看看Away3D 的ATFTexture 的实现默认是直接同步上传。压根就没留开启异步上传的参数。没办法忍受不了卡顿只好改代码了。

修改ATFTexture类代码如下:

    override protected function uploadContent(texture : TextureBase) : void
        {

if (_atfData.data.length == 0)
            {
                DevLog.debug(DevLog.ALL, "texture " + url + " length is invalid");
                return;
            }

_nativeTexture = Texture(texture);
           
            _nativeTexture.addEventListener(Event.TEXTURE_READY, _onTextureReady);
            _nativeTexture.uploadCompressedTextureFromByteArray(_atfData.data, 0, true);
        }
        
        private function _onTextureReady(event : Event) : void

    {
            
            _nativeTexture.removeEventListener(Event.TEXTURE_READY, _onTextureReady);
            _nativeTexture = null;
            
            if(hasEventListener(TextureEvent.UPLOAD_TEXTURE_COMPLETE))
                dispatchEvent(new TextureEvent(TextureEvent.UPLOAD_TEXTURE_COMPLETE));            
        }

Away3D ATFTexture的更多相关文章

  1. What is Away3D

    做了几个基于Flash平台的3D的项目,一路走来收获颇多.Away3D作为一个开源的Flash3D引擎,在3D页游领域,无疑是当前OGRE在国内的地位. 翻译出了多年前做Away3D中国社区的时候翻译 ...

  2. away3D改造白皮书

    [多余的stage3D的考虑] 因为away3D为了支持stage本身可以有n个stage3D对象这个特性,在诸如MaterialPassBase.SubGeometry中,为Program3D.Ve ...

  3. Away3D引擎学习笔记,持续更新

    (1). 准备工作,一些必须知道的东西 (创建时间:2014-06-05) A.必要的开发语言基础.至少要懂点ActionScript 3.0语法(ActionScript 3.0语法及API参考), ...

  4. away3d学习

    http://www.cnblogs.com/flash3d/p/3403109.html M3U8文件简介:http://blog.sina.com.cn/s/blog_6cf7acdf0102v0 ...

  5. [ActionScript 3.0] Away3D 官网实例

    /* Dynamic tree generation and placement in a night-time scene Demonstrates: How to create a height ...

  6. [ActionScript 3.0] Away3D 灯光的使用

    package { import away3d.containers.View3D; import away3d.entities.Mesh; import away3d.events.MouseEv ...

  7. [ActionScript 3.0] Away3D 非skybox的全景例子

    package { import away3d.containers.View3D; import away3d.controllers.HoverController; import away3d. ...

  8. [ActionScript 3.0] Away3D 旋转效果

    package { import away3d.containers.View3D; import away3d.entities.Mesh; import away3d.events.MouseEv ...

  9. [ActionScript 3.0] Away3D 天空盒(skybox)例子2

    所谓skybox就是六个面即六张图能够无缝的拼成一个正方体的盒子. package { import away3d.cameras.Camera3D; import away3d.cameras.le ...

随机推荐

  1. clipboard让复制的文本换行

    https://clipboardjs.com/dist/clipboard.min.js 用clipboard实现复制时, 想让复制的文本换行, 有两咱方法: 第一种, HTML实现: <!- ...

  2. C++ 中的权限控制

    权限控制,指的是用户只能访问符合自己权限的资源,系统对用户进行权限控制以防止用户的误操作/恶意操作等. 在C++代码中,权限控制指的是程序员在接口声明/类声明/函数声明等中进行的授权控制.如下面的代码 ...

  3. JavaScript 中常用的 正则表达式

    这编文章我来整理了一些在 javascript 中常用的正则式希望能给大家带来一些开发的灵感 //校验是否全由数字组成 function isDigit(s) { var patrn=/^[0-9]{ ...

  4. node初步一:HTTP请求

    一. 创建pathtest.js文件 var http= require('http' ); var url= require('url' ); function start (){ function ...

  5. [CSS]float&clear浮动

    CSS float 属性 浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止. 由于浮动框不在文档的普通流中,所以文档的普通流中的块框表现得就像浮动框不存在一样.  可取的值 ...

  6. 用gtest实现数据驱动的单元测试

    //使用gtest进行数据驱动的单元测试 #include <gtest/gtest.h> #include <iostream> #include <vector> ...

  7. python随机数

    前提:需要导入random模块 >>>import random 1.random.random random.random()用于生成一个0到1的随机符小数: 0 <= n ...

  8. BZOJ 3595: [Scoi2014]方伯伯的Oj SBT+可持久化Treap

    3595: [Scoi2014]方伯伯的Oj Time Limit: 6 Sec  Memory Limit: 256 MBSubmit: 102  Solved: 54[Submit][Status ...

  9. HDUOJ Clear All of Them I 状压DP

    Clear All of Them I Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 122768/62768 K (Java/Oth ...

  10. BZOJ 3969 low power

    Description 有\(n\)个机器,每个机器有\(2\)个芯片,每个芯片可以放\(k\)个电池.每个芯片能量是\(k\)个电池的能量的最小值.两个芯片的能量之差越小,这个机器就工作的越好.现在 ...