Запись непосредственно в фрейм-буфер больше не работает. Есть ли вообще способ записи на дисплей в НДК? Я мог бы использовать ANativeWindow, но это требует существующей поверхности. Есть ли способ лучше? Или это единственный способ создать поверхность изначально, а затем использовать ANativeWindow?
Дисплей принадлежит SurfaceFlinger и Hardware Composer, поэтому, если вы не планируете останавливать платформу Android, вам придется работать с ними. (См. графическая архитектура док Больше подробностей.)
Если вы разрабатываете отдельную команду, которая выполняется как «shell» или «root», и вы не возражаете против использования закрытых интерфейсов, вы можете просто запросить у SurfaceFlinger окно и нарисовать его. Начиная с 5.0 «Lollipop» старые тесты GLES были обновлены для работы таким образом. Увидеть этот ответ для указателей; демонстрация в Сан-Анджелесе является иллюстративной.
Если вы разрабатываете обычное приложение, вам нужно создать Surface и визуализировать его через ANativeWindow. Обычные приложения не имеют эксклюзивного доступа к дисплеям.