Как я могу создать новое NativeWindow в Android NDK?

Я попробовал демо test-libstdC++ и мне понравилось, что я могу запустить его из консоли и все без запуска полнофункционального приложения для Android.

Я хотел бы создать контекст opengl, чтобы иметь возможность запускать свое приложение opengl es 2.0 из консоли без лишних хлопот.

Любая идея, как я мог бы инициализировать EGL из NDK-приложения, которое не использует нативное действие или что-либо еще, то есть оно даже не упаковано в файл.APKK, просто имеет основной метод, упакованный как исполняемый файл linux.

Большое спасибо!

ОБНОВИТЬ

Это случайно не имеет ничего общего с ANativeWindow_acquire в *android/native_window.h`?

Спасибо!

2 ответа

Решение

Если вы загляните внутрь деревьев git для Android, вы увидите, что есть несколько простых тестовых приложений, которые создают собственное окно и запускаются из командной строки.

нажмите здесь, чтобы увидеть тесты

Что касается вопросов к некоторым из приведенных выше комментариев Альбуса, проблема с перевернутой цепочкой заключается в том, что ваш текущий драйвер может поддерживать только одну переворотную цепочку в системе, и это удерживается SurfaceFlinger, поскольку это объект, который может записывать в собственное окно. /кадровый буфер. Чтобы обойти это, вы можете просто остановить движок Android Run Time, набрав "stop" в оболочке adb, а затем перезапустить ваше приложение. Чтобы снова запустить движок Android Run, сделайте 'start'.

Вот пример использования EGL из командной строки:

http://jiggawatt.org/badc0de/android/index.html

Однако такой процесс без "легальной" активности пользовательского интерфейса Android будет в любой момент прерван системой за то, что он рассматривается как фоновый процесс. Кроме того, вы не сможете использовать сенсорный экран или ввод с клавиатуры, или любые другие вещи, которые требуют контекста, например, выяснить, где установлена ​​SD-карта и т. Д.

Другие вопросы по тегам