2014-02-09 43 views
2

我正在构建一个基于画布的网页游戏,在桌面上以60fps的速度运行。它也运行在60fps在android上的铬。我将它加载到phonegap应用程序中,并且fps计数器仍然读取60fps,但屏幕每隔几个刻度就会绘制一次。是否有一个刷新率限制器,迫使webview只能每秒一次地绘制?甚至当网站宣称它的重绘速度为60fps时,还有哪些其他的东西可能会限制我的绘图?Phonegap画布低刷新率

+0

也许你会有更好的表现与以下插件(需要全屏画布,并没有实现所有的画布功能)https://github.com/phonegap/phonegap-plugin-fast-canvas – QuickFix

+0

你是否控制重画与'requestAnimationFrame'? – fny

+0

我会研究fastcanvas,但我希望我不会。是的,我正在使用requestanimationframe – Dested

回答

5

默认情况下,PhoneGap将使用内置的默认浏览器,该浏览器不是Chrome浏览器,除非您正在使用KitKat,但这是一个不同的故事。

现在我有问题,我自己甚至像得到一个用户签名小画布项目的默认浏览器,但是那是因为火灾的TouchEvent率低......

但无论如何,可行的解决方案将是强制的PhoneGap使用而不是默认的一个WebChromeClient,你可以做到这一点的super.loadUrl调用之前加入如下一行:

appView.setWebChromeClient(new WebChromeClient()); 

如果强制使用WebChromeClient确保您启用JavaScript,本地存储,如果你需要它,等等。也有可能一些PhoneGap插件会中断。如果你的游戏纯粹是HTML5而不是我建议的考虑,不要为你的android版本使用phonegap,那么构建一个简单的WebView应用程序在Android中很容易。

此外,如果你的游戏打算使用加速度传感器,看看什么是浏览器的原生支持:Can I Use resources

而且我一定会读THISTHIS

希望它帮助。 Emil

+0

这是一个非常有趣的回复。为了记录,我正在使用kitkat。它在webview中运行chrome。奇怪的是,它运行在phonegap之外的60fps,以及手机间隙内60fps(通过xStats输出),唯一的区别是它只是以大约2fps的速度对我进行物理重绘。我还没有看到电话之上的其他抽象层吗?这是一个在手机上缺乏特定功能的画布的常见行为吗? – Dested

+0

是的,我很害怕,我进一步阅读,似乎是PhoneGap的一个问题,无法资助确切的为什么。看起来,甚至连Andorid 4.4默认浏览器都不支持WebGl,而Chrome则支持(在浏览器中打开Chrome并输入:about:// gpu)。您可以尝试强制使用GPU,并在这里显示技巧:http://davidwalsh.name/translate3d。为了能够给你更精确的文档,我做了更深入的挖掘,并且我可以证实,甚至连KitKat Chromium webview都支持WebGL(请参阅:http://buff.ly/JjQSm8) –

+0

Whit所有这些说法并放在一起我认为你应该尝试寻找替代解决方案。 QuickFix建议的FastCavans或由我自己建议的Intel XDK(我现在正在下载以供玩耍)。此外,我忘了提及,它看起来100%愚蠢,但请确保您已在您的Manifest中启用硬件加速

1

不幸的是,新的Webview并没有与Chrome相同的功能。这些差异之一是Chrome使用的WebGL 3D画布。查看here了解新Webview和Chrome之间功能差异的列表。

+1

@Dested - 另见https://code.google.com/p/chromium/issues/detail?id=315111。 – JSON