Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android OpenGLES-在Moto Droid上以大分辨率调用OnDrawFrame之间存在延迟_Android_Opengl Es - Fatal编程技术网

Android OpenGLES-在Moto Droid上以大分辨率调用OnDrawFrame之间存在延迟

Android OpenGLES-在Moto Droid上以大分辨率调用OnDrawFrame之间存在延迟,android,opengl-es,Android,Opengl Es,我们目前正在开发一款使用opengles的Android游戏。我们现在正在尝试支持不同的分辨率,但是,当考虑到大分辨率时,我们正在测试的moto droid似乎落后于其本机分辨率800x400。我们将帧锁定为每秒30帧,当我们检查时,我们的游戏只需要大约15-20毫秒就可以完成它的更新和在droid上绘图,然而,有时调用ondrawframe之间会经过30-60毫秒。我的Galaxy S设备没有这个问题,当我们把分辨率放在motorola droid上时,它看起来非常好 我们调查了这个问题,发现

我们目前正在开发一款使用opengles的Android游戏。我们现在正在尝试支持不同的分辨率,但是,当考虑到大分辨率时,我们正在测试的moto droid似乎落后于其本机分辨率800x400。我们将帧锁定为每秒30帧,当我们检查时,我们的游戏只需要大约15-20毫秒就可以完成它的更新和在droid上绘图,然而,有时调用ondrawframe之间会经过30-60毫秒。我的Galaxy S设备没有这个问题,当我们把分辨率放在motorola droid上时,它看起来非常好

我们调查了这个问题,发现人们似乎有着完全相同的问题,但没有人能提供解决方案。市场上其他似乎使用opengles的游戏在moto droid上运行良好

我们有什么遗漏吗?我们需要打电话或做些什么?似乎没有理由在对ondrawframe的调用之间有30-60毫秒的间隔,特别是当本机分辨率800x400没有超过默认值533x320时,或者当不允许大屏幕时,它所使用的任何东西时,因此由于缓冲区交换,这似乎是荒谬的。延迟甚至发生在几乎没有任何东西被吸引到屏幕上时,所以这并不是因为我们画得太多


关于如何解决这一问题的任何启示或帮助都将非常有用。

您必须提供更多信息。如果不是因为绘图,那么应该是因为任何计算或对象分配代码。在游戏中经常分配对象会调用GC,这对游戏是有害的

下面的链接将解释Android游戏的性能和内存分配

我建议你看这两个由谷歌安卓集团制作的视频


希望这有助于优化。

您的清单中有,对吗?可能是一些自动缩放正在进行…是的,我们有小,正常,大屏幕以及任何密度设置为真的清单。当取出屏幕支架时,它在droid上运行得非常好,更新/绘制大约需要16毫秒,而屏幕支架中的更新/绘制大约需要20毫秒…因此仍然有大约13毫秒的空闲时间,但在支持大屏幕/任何密度时,30-60毫秒会在绘图调用之间丢失。您是连续使用RENDERMODE_还是脏的RENDERMODE_?你到底是如何将帧速率锁定到30fps的?我们记录更新和绘制所需的时间,然后让线程休眠33次以进行更新/绘制。我从来没听说过你说的这些常数。我发现了你所说的rendermode的意思,我们将它保留为continuous,我相信,因为我们甚至没有设置它,所以我猜这是默认值。是的,我们已经讨论过这个话题了。大多数东西都是在游戏中预先分配的,正如我所说的,在默认分辨率下,它在Droid上运行得非常好,但是,当我们允许大屏幕时,它就没有了。GC不能简单地在不同的分辨率上做更疯狂的事情。我们在游戏中使用GC和所有东西所花费的时间都不到20毫秒,我们可以计算这个时间。然而,在允许大屏幕的droid上,调用drawframe之间的时间间隔可以长达60毫秒,正如我所说的,我发现在另一个没有解决方案的网站上发布了这个问题。遗憾的是,GC不是问题所在