【问题标题】:Android (JNI/NDK) OpenGL - FPS Display helpAndroid (JNI/NDK) OpenGL - FPS 显示帮助
【发布时间】:2012-01-10 19:54:40
【问题描述】:

我有一个需要显示当前 FPS 的 Android 应用。

1 - 应用在 OpenGL 中渲染。

public void onDrawFrame(GL10 gl) {
    synchronized(lock) {
        NativeCalls.getFrame(); // Setup in JNI/NDK
        NativeCalls.drawFrame(); // using openGL
        }
    }
}

2 - 您可以看到渲染调用是从 Java 完成的,以从 JNI 调用函数。

3 - 我需要在这个 OpenGL 表面上显示当前的 FPS。

我认为这总结了我想要做的事情,所以让我再解释一下。这是动态壁纸,因此速度至关重要,我需要一种快速的方式向用户展示 fps。

我知道如何计算 FPS,只是不显示它。

我正在寻找简单的方法,但问题是 OpenGL 渲染和设置是通过 JNI 完成的。

是否可以从 Java 端渲染它并将文本“覆盖”在从 JNI 创建的 OpenGL 表面上?

我已经研究过通过 JNI 端渲染它,但是在 OpenGL 中显示字体很痛苦。 (我的代码是 C,而不是 C++ - 由于其他需要重大重新编码才能从 NDK 方面符合 CPP 的事情,因此无法更改)。

任何建议、示例等都会很棒。我知道这可以通过 C 使用 freetype2 来完成,但是那里的简单库似乎都适用于 CPP(尝试了一些,由于 C->C++(结构等),转换不是一个选项)。

显示的文本不多,例如:“FPS: 20”。仅此而已。

【问题讨论】:

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


    【解决方案1】:

    我也在做同样的事情;在 onDrawFrame() 中,我调用一个本地函数进行渲染,然后在 Java 中,我使用 drawText() 将 fps 渲染为纹理,并在 Java 代码中使用该纹理渲染四边形。效果很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-01
      • 2016-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多