#android #opengl-es
#Android #opengl-es
Вопрос:
Я смотрю на пример Android ndk с opengl es. В любом случае, там есть строки:
int[] attrib_list = {EGL_CONTEXT_CLIENT_VERSION, 2, EGL10.EGL_NONE };
EGLContext context = egl.eglCreateContext(display, eglConfig, EGL10.EGL_NO_CONTEXT, attrib_list);
Где EGL_CONTEXT_CLIENT_VERSION определяется как:
private static int EGL_CONTEXT_CLIENT_VERSION = 0x3098;
Я просматривал API для этого вызова, и там сказано, что последний параметр относится к списку атрибутов. Но, похоже, я не могу найти ничего, что на самом деле дает атрибуты, которые вы, возможно, захотите туда поместить, или даже объяснить два атрибута, которые пример помещает туда. Кто-нибудь может сказать мне, что означают эти атрибуты? (Или, что еще лучше, также укажите мне на какую-нибудь документацию, которая объясняет это).
Спасибо
Редактировать: Я просто понял, что немного контекста помогло бы. Конкретный образец находится в samples / hello-gl2. Файл находится в классе view, в частности, в статическом классе ContextFactory.
Комментарии:
1. Я также не нашел «правильной» информации, но я пришел к выводу, что параметры указаны в двух. Сначала идентификатор атрибута, которому вы присваиваете значение, а затем значение. В этом случае вы указываете, что версия контекстного клиента должна быть равна 2. Почему последнее значение всегда равно EGL10.EGL_NONE, для меня совершенно непонятно. В любом случае, вот одна ссылка , которая дала некоторое представление об этой теме, как только я ее прочитал.
Ответ №1:
Проверьте спецификацию, страница 43:
attrib list
может бытьNULL
или пустым (первый атрибут —EGL_NONE
), в этом случае атрибуты принимают значения по умолчанию, как описано ниже.
EGL_CONTEXT_CLIENT_VERSION
определяет, какую версию контекста OpenGL ES создавать. Значение атрибута1
указывает на создание контекста OpenGL ES 1.x. Значение атрибута2
указывает на создание контекста OpenGL ES 2.x. Значение по умолчанию дляEGL_CONTEXT_CLIENT_VERSION
равно1
.
Комментарии:
1. Имеет смысл, спасибо. Хотя, как они узнали, что нужно установить его в 0x3098, это просто что-то специфичное для Android? Спасибо.
2. @Lief: Я полагаю, они взяли это из официального включаемого файла .
3. @genpfault Странно, однако, что они не включили константу в свой класс constants в оболочке Java,
android.opengl.EGL14
.