gpt4 book ai didi

apache-flex - Flex/Flash/AS3中的Vsync?

转载 作者:行者123 更新时间:2023-12-04 04:42:44 24 4
gpt4 key购买 nike

我从事的是2D射击游戏,屏幕上有许多移动物体(子弹等)。

我使用BitmapData.copyPixels(...)将整个屏幕渲染到一个缓冲区:BitmapData。
然后,我从“缓冲区”“复制像素”到screen:BitmapData。帧率为60。

private var bitmap:Bitmap = new Bitmap();
private var buffer:Bitmap = new Bitmap();

private function start():void {
addChild(bitmap);
}

private function onEnterFrame():void {
// render into "buffer"
// copy "buffer" -> "bitmap"
}

问题是这些 Sprite 正在撕裂:
Sprite 的某些部分被水平移动了。

看起来像是关闭了VSYNC的PC游戏。

有人解决了这个问题吗?

更新:,问题不在于性能,而在于摆脱屏幕撕裂。

[!]更新:我已经创建了 another question,在这里您可以尝试两种实现:使用Flash方式或BitmapData + copyPixels()

最佳答案

当我目前正在开发自己的游戏时,我感到您的痛苦。在默认设置下,无论生成什么代码,Flash渲染器都会产生可怕的屏幕撕裂/垂直同步问题。

这就是为什么我很高兴找到最简单,最优雅的答案的原因,那就是没有重构代码(这一点也没有帮助,问题是Flash播放器,而不是代码)。

只需在发布设置中启用硬件加速。有两种不同的选择:

级别1:直接;和级别2:GPU

在官方文档Specify publish settings for SWF files上了解有关它的更多信息,并确定哪种选项最适合您的游戏。

目标市场确实是其中的一个因素,如果这对游戏玩家来说是认真的游戏,那么您就不必担心可能的性能问题,因为大多数游戏玩家都拥有GPU。

This article并未专门为我提供解决方案,而是引导我朝着正确的方向前进。但是,如果您的游戏要在浏览器窗口中进行,则可能还必须使用将wmode设置为direct或gpu的相同技术。

关于apache-flex - Flex/Flash/AS3中的Vsync?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/989471/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com