2011-12-01 121 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

謝謝,這種方法適用於我所需要的! –