2011-12-01 155 views
1

我有一个android应用程序,我需要显示当前的FPS。Android(JNI/NDK)OpenGL - FPS显示帮助

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”。而已。

回答

2

我正在做同样的事情;在onDrawFrame()中,我调用本地函数来执行渲染,然后返回到Java中,我使用drawText()将fps渲染为纹理,并在Java代码中渲染具有该纹理的四边形。很棒。

+0

谢谢,这种方法适用于我所需要的! –