Как получить отображение EGL / контекст для конкретного GLSurfaceView - PullRequest
4 голосов
/ 28 июня 2011

Это продолжение до моего первоначального Вопроса , который, вероятно, был слишком широким (тогда как этот, вероятно, слишком конкретен, но, возможно, я могу применить метод Ньютона).
Моя конкретная ситуация: OpenGL ES 2.0 на Android с использованием только Java (без JNI / собственного кода).

Я пытаюсь понять, как EGL и имплиментация GLES в Android работают вместе (или нет). У меня возникли проблемы, потому что интерфейс EGL (API) не очень подходит для Java-ориентированной ОС Android на базе Activity.

В качестве конкретного примера: я создал подкласс GLSurfaceView и создаю экземпляр, используя макет XML, а затем использую findViewById() для получения ссылки. Используя этот подход, у меня работает текстурированный пример треугольника (GLES 2.0 на Android 2.2, API уровень 8). Этот пример не использует EGL. В качестве учебного упражнения я хотел переписать его, используя EGL.

Все примеры, которые я могу найти, используют eglGetDisplay() и eglInitialize(), и создают контекст в облаке жирного черного дыма. Ни один из примеров, ссылок и вопросов, которые я нашел, не относится конкретно к ES2.0 / EGL / Android / Java. Я что-то упустил полностью? Этот вопрос относится (я думаю), но не имеет никаких ответов, и пример, используемый в Руководстве по программированию ES 2.0 , представляет собой отдельную реализацию на Си.

1 Ответ

3 голосов
/ 28 июня 2011

Нет ничего особенного для Android на EGL.Когда вы создаете поверхность окна EGL (например, lCreateWindowSurface), вы даете ему Surface или SurfaceHolder (который вам даст SurfaceView.) Это означает, что вы можете в значительной степени скопировать / вставить пример EGL из C, C ++ или любого другого языка и получитьработать на Android в считанные минуты.Вот как я это делаю; -)

Обновление: я только что прочитал ваше другое сообщение.Вам нужен EGL для инициализации контекста GLES.

...