Главная » Программирование игр под Android » Уменьшаем количество вызовов методов OpenGL ES/JNI – РАЗРАБОТКА ИГР ДЛЯ ОС ANDROID

0

Прежде всего это могло произойти из-за большого количества вызовов OpenGL ES на кадр, когда мы визуализируем модель для каждого из Бобов. У нас происходит четыре матричные операции с каждым экземпляром Боба. Если нам не нужно поворачивание или изменение размеров, можем сократить количество вызовов до двух. Вот количество кадров в секунду, когда мы используем только gl Loadldenti ty  и gl Trans 1 atef  во внутреннем цикле:

Итак, мы немного улучшили работу НТС Него, в свою очередь Droid и Nexus One также выиграли от уменьшения количества матричных операций до двух. Конечно, здесь мы идем на хитрость: ведь если нам нужно повернуть и изменить размеры Боба, мы не можем убрать два дополнительных вызова. Тем не менее, когда мы работаем с 20-визуализацией, мы можем применить небольшой маневр, который поможет нам избавиться от всех матричных операций.

OpenGL ES – это API на языке С, его применение в языке Java обеспечивается при помощи обертки JNI. Это значит, что любой метод OpenGL ES, который мы вызываем, проходит через JNI-обертку, чтобы вызвать саму С-нативную функцию. В более ранних версиях Android при этом потреблялась масса памяти, но в более поздних версиях все стало гораздо лучше. Как вы видите сами, это влияние не так уж заметно, особенно если операции занимают больше времени, чем запуск вызова.

Источник: Mario Zechner / Марио Цехнер, «Программирование игр под Android», пер. Егор Сидорович, Евгений Зазноба, Издательство «Питер»

По теме:

  • Комментарии