【发布时间】: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