2017-01-11 6 views
0

Если я запустил glGetString(GL_EXTENSIONS) в своем коде NDK (C/C++), я получаю список из 38 поддерживаемых расширений. Но если я получаю доступ к OpenGL ES 3.2 в Java и запускаю GLES32.glGetString(GLES32.GL_EXTENSIONS), я получаю список из 74 поддерживаемых расширений.Доступ к OpenGL ES-расширениям с Android NDK

Я предполагаю, что проблема в том, что мое приложение NDK связывает библиотеку libGLESv3.so, которая не предоставляет никаких функций, помимо OpenGL ES 3.0. Было бы неплохо, если бы была библиотека libGLESv32.so, но я не могу ее найти.

Есть ли способ получить доступ к этим дополнительным расширениям в приложении NDK?

ответ

0

Существует не такая вещь, как библиотека GLESv32.so (в принципе не должно быть GLESv3.so); OpenGLES 3.x предназначен для обратной совместимости с OpenGL ES 2.x, поэтому все приложения должны связываться с GLESv2.so даже для функциональности GLESv3.

+0

Я попытался подключиться к libGLESv2.so, но получил несколько неопределенных ссылок (glMapBufferRange, glBindVertexArray и т. Д.). Файл libGLESv3.so в два раза больше, чем файл libGLESv2.so, поэтому маловероятно, что libGLESv2.so предоставляет все функции libGLESv3.so. – user934904

+0

OK - звучит так, как будто Android сделал что-то «особенное» здесь. – solidpixel

0

Похоже, что glGetString(GL_EXTENSIONS) не возвращает полный список расширений.

Для получения полного списка вам необходимо позвонить по телефону glGetIntegerv с помощью GL_NUM_EXTENSIONS. Затем вы можете выполнять итерацию через расширения, вызывая glGetStringi с GL_EXTENSIONS.

+0

На самом деле это не было проблемой. Проблема заключалась в том, что '__android_log_print' урезает содержимое до 1 КБ на строку. 'glGetString (GL_EXTENSIONS)' возвращает полный список расширений. – mstorsjo

 Смежные вопросы

  • Нет связанных вопросов^_^