为什么有多个具有3D旋转的对象会导致严重的性能损失

时间:2012-08-16 11:17:17

标签: actionscript-3 flash

目前我正在开发一款原型赛车游戏,旨在尽可能接近3D图形,而无需使用Flash Player 11和/或DirectX。为此,我选择使用RotationX,RotationY和RotationZ来为我提供所需的效果。为了使建筑物成为3D,我创建了同一个对象的四个实例并适当地旋转/索引它们。

这很有效,直到有一个点在舞台上有很多这些旋转对象 - 然后问题从性能开始。也就是说,没有。

这里有一个例子: http://www.hosted101.net/car/Racing3D.html

如果你沿着轨道走,你会看到舞台上的表现越来越差。

我试图纠正这个问题的阶段包括:

1)禁用Z排序 - 这没有增加性能(令我惊讶)

2)禁用对象RotationZ以跟随相机 - 同样,性能没有提高

3)交换位图图形的矢量图形 - 遗憾的是,性能没有提高

究竟是什么导致这些戏剧性的表演?

只是在舞台上有这么多具有​​3D旋转的物体吗?

Example of massive FPS loss

2 个答案:

答案 0 :(得分:1)

在这里回答我自己的问题,以防有人进入类似的泡菜:

该问题涉及游戏的FPS。将它设置为(最初)120是不可能的低端机器匹配,因为这样的不同结果被看到。当降到60时,它仍然太高,因此当多个旋转的物体在舞台上时,FPS下降得太低,从而产生波涛汹涌的效果。

将FPS设置为最大值24并将最高速度/转速加倍,游戏现在正常运行。

道德:如果你的目标是低规格的机器,那么较低的FPS会更好。

答案 1 :(得分:0)

您发布的链接以60 FPS的速度为我运行。

如果这些更改都没有帮助,您的性能瓶颈可能会出现在其他地方,请尝试使用TheMiner等内容进行配置。

你也可以尝试将wmode设置为“direct”或“gpu”我注意到你正在使用“window”。

由于您不需要在任何这些建筑物和树上进行任何鼠标事件,因此请确保在所有这些精灵上将mouseEnabled mouseChildren设置为false。

那些让我想到的东西希望有所帮助。