性能:动画直线多边形与曲线形状

时间:2011-03-04 06:18:21

标签: flash performance animation polygon vector-graphics

我正在探索Flash作为实现动画大量应用程序的选项,我有一个概念性的问题。

我的问题是: Adob​​e Flash中,是动画弯曲形状显著多个处理器密集型比动画直的多边形?或者他们的表现是否相等? (假设任何形状都非常简单,每个形状有3到10个顶点/锚点,并且有20到1000个形状。动画包括拉伸,挤压,旋转和平移形状。)

能够在没有明显减速的情况下使用两者都会很棒,但是如果仅使用直线多边形则更快。但是在我计划一些事情之前,我需要知道哪个通常是真的。

(我试过寻找互联网上的人是否已经问过这个,但我能找到的最接近的是光栅图形与矢量图形,这是不是我说的是:我的两个选择使用矢量的图形。)

感谢您的时间!

2 个答案:

答案 0 :(得分:1)

您可以编写某种基准测试。 Lessay:

stage.frameRate = 600;
var itmz:Array = new Array();
for(var i:int = 0; i < 1000; i++){
    var item:Shape = new Shape;
    [...Draw...]
    item.cacheAsBitmap = false;
    itmz.push(item);
    addChild(item);
}

var timer:Number= getTimer();

addEventListener(Event.ENTER_FRAME, onEnterFrame);

function onEnterFrame(e:Event):void{
    trace(getTimer() - timer);
    timer = getTimer();
    for(var i:int = 0, l:int = itmz.length; i < l; i++){
        itmz[i].x = Math.random() * 800;
        itmz[i].y = Math.random() * 800;
    }
}

或多或少这样可以用来测试速度。然后比较数字,如果你有足够的形状来注意相当强的滞后(所以你每秒少于2帧)然后比较onEnterFrames之间的时间 - 最好越好越好。重复不同的形状而不是结果。

编辑:在辩论层面,我会说这取决于你想要达到的目标。例如,如果你试图用几条直线替换每条曲线(例如:圆形变为28边多边形),那么我的猜测是曲线更快。但是,用方形内容方块替换圆角正方形应该会更快,但我相信这不会是一个明显的变化。除非所有点都在不断变形,否则位图缓存会消除它们之间的所有差异。

答案 1 :(得分:0)

有趣的问题。直线和曲线之间的区别在于,第二种情况下还有一个虚拟点(使曲线深度变深的点控制...我简化了...),但实际上,GPU的贪婪资源是什么由于浮点数值(尤其是抗锯齿)而导致跟踪是跟踪。 小数点后的位数越少,曲线将越美观和精确。为了提高性能,最常用的技术是根据形状的大小或其曲线级别自动调整细节级别。 后卫