Android (JNI / NDK) OpenGL - FPS Показать справку - PullRequest
1 голос
/ 01 декабря 2011

У меня есть приложение для Android, для которого мне нужно отобразить текущий FPS.

1 - Приложение отображается в OpenGL.

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

2 - Вы видите, что вызов рендерингасделано из Java для вызова функций из JNI.

3 - мне нужно показать текущий FPS на этой поверхности OpenGL.

Я думаю, что это подводит итог тому, что я пытаюсь сделать, поэтому давайтеЯ объясню немного больше.Это живые обои, поэтому скорость очень важна, и мне нужен быстрый способ показать fps пользователям.

Я знаю, как рассчитать FPS, просто не отображать его.

Я ищу способы сделать это просто, но проблема в том, что рендеринг и настройка OpenGL выполняется через JNI.

Возможно ли сделать это со стороны Java и "наложить" текст на поверхность OpenGL, созданную из JNI?

Я рассмотрел рендеринг через сторону JNI, но отображалшрифты в OpenGL это боль.(Мой код - C, а не C ++ - это нельзя изменить из-за других вещей, которые потребуют серьезного перекодирования, чтобы стать совместимым с CPP со стороны NDK).

Любые предложения, примеры и т. Д. Были бы хорошими.Я знаю, что это можно сделать с помощью freetype2 через C, но простые библиотеки, кажется, все для CPP (пробовал некоторые, преобразование не вариант из-за C-> C ++ (структуры и т. Д.)).

Текст для отображения невелик, например: «FPS: 20».Ничего больше.

1 Ответ

2 голосов
/ 01 декабря 2011

Я делаю то же самое; в onDrawFrame () я вызываю встроенную функцию для рендеринга, затем в Java я использую drawText () для рендеринга fps в текстуру и рендеринга с этой текстурой в коде Java. Работает отлично.

...