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

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

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

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

//提前致谢!

最佳答案

我是 android 开发的新手,但发现触摸处理程序也非常滞后。默认示例是新建一个对象并经常这样做——这肯定会让垃圾收集器生气。通过调用“Thread.sleep(10);”,我设法让它以一种不那么滞后的方式执行。在运行函数中。

我认为用对象的循环缓冲区替换“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;
    }

关于Android,触摸屏时openGL在jni中滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5237414/

相关文章:

android - 文件浏览器什么都不显示

android - 如何在移动设备上获得大文件的快速文件哈希算法

java - 在 JNI 下以 native 代码获取 java 缓冲区的最有效方法是什么?

opengl - 获取支持的 GLSL 版本

触摸/释放屏幕时 Galaxy Note 2 上的 Android 线程性能/优先级

ios - GLKit 不绘制 GL_POINTS 或 GL_LINES

android - XmlResourceParser 实现

android - 如何在 Xamarin 上使用 SkiaSharp 绘制日语文本

java - 当App被推送到后台并重新创建时,RecyclerView未恢复LayoutManager状态

c++ - 无法使用 JNI 从 C++ 调用 Java