我目前正在测试Android平台上游戏中所需的所有功能。我只修改了hello-gl2示例代码,并在两个渲染过程中添加了一些纹理,VBO,FBO和简单着色器。
问题是,当我让应用程序在没有触摸屏幕的情况下运行时,我有大约35-45 fps。但如果我开始连续触摸屏幕,渲染开始滞后!这是一个问题,因为输入和渲染是在同一个线程中(如果认为的那样?),它是否可以修复?如果我无法解决这个滞后问题,那么我的游戏可能无法运行得足够好。 (有一些沉重的渲染东西)
//提前致谢!
答案 0 :(得分:1)
我对Android开发相当新,但发现触摸处理程序也非常迟钝。默认示例是新建一个对象并且做了很多 - 这必然会使垃圾收集器生气。我通过调用'Thread.sleep(10);'设法让它以一种不那么迟钝的方式执行。在run函数里面。
我想用一个循环的对象缓冲区替换'new Runnable'会提高性能,但我还没有调查过。我的触摸事件似乎发生在一个单独的线程上,这可能会导致并发症。
Override public boolean onTouchEvent(final MotionEvent event)
{
queueEvent(
new Runnable()
{
public void run()
{
int action = event.getAction();
//do your handling here
try
{
Thread.sleep(10);
} catch (InterruptedException e)
{
e.printStackTrace();
}
}
});
return true;
}