Android(JNI / NDK)OpenGL - FPS显示帮助

时间:2011-12-01 17:00:37

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

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

1 - App在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”。没什么。

1 个答案:

答案 0 :(得分:2)

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