GL_OES_texture_float не поддерживается на устройстве OpenGL ES 3.0 в контексте 2.0?

#android #opengl-es #android-ndk #opengl-es-2.0 #opengl-es-3.0

#Android #opengl-es #android-ndk #opengl-es-2.0 #opengl-es-3.0

Вопрос:

У меня есть приложение OpenGL ES 2.0, которое зависит от GL_OES_texture_float расширения. Это есть практически на каждом устройстве за последние 3 года, так что это не проблема.

Однако при использовании Galaxy S5 с графическим процессором Adreno 330 у меня возникла проблема. Adreno 330 поддерживает OpenGL ES 3.0, который изначально включает поддержку текстур с плавающей точкой, расширение не требуется. И действительно, получение строк расширения из OpenGL на устройстве не отображается GL_OES_texture_float как допустимое расширение.

Но при использовании контекста OpenGL ES 2.0 на этом устройстве использование текстур с плавающей точкой не привязывается, хотя у него явно есть такая возможность, поскольку графический процессор поддерживает 3.0. Похоже, это просто не работает, потому что я нахожусь в контексте 2.0, и они больше не сообщают об этом как о расширении.

Кто-нибудь еще сталкивался с подобным сценарием?

Комментарии:

1. Я бы рекомендовал создать контекст ES3, когда он существует, поскольку тогда у вас будет доступ к этой функции. Учтите, что существует некоторая фрагментация с OpenGL (ES), и, как вы обнаружили, это, вероятно, ошибка в драйвере.

2. Ах, я изначально не понимал, что OGLES 3.0 обратно совместим с шейдерами 2.0, я попробую.

3. Это так, однако вам может потребоваться добавить #version с соответствующим номером версии в шейдеры, иначе он должен просто работать