Один способ, который приходит на ум, - это нарисовать пиксели вашего фрейма в текстуру, а затем визуализировать эту текстуру, используя OpenGL.
Некоторое время назад я написал сообщение в блоге о том, как это сделать, прежде всегодля старых пиксельных видеоигр, но это также относится и к вашей ситуации.Это сообщение Собственное кодирование Android на C , и я установил github-репозиторий с примером .Используя эту технику, я смог получить 60 FPS даже на оборудовании первого поколения.
РЕДАКТИРОВАТЬ относительно glTexImage2D против glTexSubImage2D для этого подхода.
Вызов glTexImage2D выделит видеопамяти для вашей текстуры и скопируйте пиксели, которые вы передаете в эту память (если вы не передаете NULL).Вызов glTexSubImage2D обновит пиксели, которые вы указали в уже выделенной текстуре.
Если вы обновите все текстуры, то есть небольшая разница, вызывая одну или другую, фактически glTexImage2D обычно быстрее,Но если вы обновляете только часть текстуры, glTexSubImage2D выигрывает по скорости.
Вы должны использовать размеры текстур степени 2, поэтому при покрытии экрана на устройствах высокого разрешения требуется текстура 1024x512 и512x512 текстур на средних разрешениях.Текстура больше, чем область экрана (высокое разрешение 800x400), что означает, что вам нужно обновить только ее часть, так что glTexSubImage2D - это то, что нужно.