Android,openGL在触摸屏时滞后于jni

时间:2011-03-08 19:42:45

标签: android java-native-interface opengl-es-2.0 android-ndk lag

我目前正在测试Android平台上游戏中所需的所有功能。我只修改了hello-gl2示例代码,并在两个渲染过程中添加了一些纹理,VBO,FBO和简单着色器。

问题是,当我让应用程序在没有触摸屏幕的情况下运行时,我有大约35-45 fps。但如果我开始连续触摸屏幕,渲染开始滞后!这是一个问题,因为输入和渲染是在同一个线程中(如果认为的那样?),它是否可以修复?如果我无法解决这个滞后问题,那么我的游戏可能无法运行得足够好。 (有一些沉重的渲染东西)

//提前致谢!

1 个答案:

答案 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;
    }