Как вызвать создание контекста EGL? - PullRequest
0 голосов
/ 10 ноября 2011

У меня есть приложение Android NDK, которое выполняет весь программный рендеринг.Теперь я хочу использовать Open GL ES для рендеринга.

У меня есть модульные тесты, которые вызывают EGL и создают PBuffer.Теперь я хочу сделать все в окне вместо PBuffer.Я адаптировал код из примера hello-gl2.Я создал новый файл Java, который использует GLSurfaceView вместо SurfaceView.Я создал несколько собственных функций для GLSurfaceView.Я успешно вызвал C из Java и успешно вызвал Java из C.

Тем не менее, никаких картинок.

Я проследил с помощью Eclipse и получил ошибку, которая говорит о том, что выполняются вызовы GLбез текущего контекста.Я делаю setEGLContextFactory (новый ContextFactory ());setEGLConfigChooser (полупрозрачный - новый ConfigChooser (8, 8, 8, 8, 0, 0): новый ConfigChooser (5, 6, 5, 0, 0, 0));setRenderer (новый Renderer ());Однако ConfigChooser.chooseConfig () никогда не вызывается.Кто должен это называть?Пример кода не дает никакой подсказки.

Нужно ли также внести некоторые изменения в файл XML?Пожалуйста, дайте мне несколько идей о том, как идти дальше.Я только в тупик.

1 Ответ

0 голосов
/ 17 декабря 2011

Оказалось, что возникла проблема с потоками: поток визуализации GL и поток графической базы данных находились в тупике. Вот как я это решил. Я сократил количество потоков на один и сам управлял GL:

  1. получить MyGLSurfaceView из SurfaceView вместо GLSurfaceView.
  2. Когда вызывается MyGLSurfaceView.surfaceCreated (), сжимаем ANativeWindow (из основного потока) в глобальном.
  3. инициализировать EGL в потоке базы данных, используя ANativeWindow для создания EGLContext.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...