2015-03-03 4 views
1

У меня был фрагментарный шейдер, работающий долгое время на каждом телефоне, который я пробовал. После завершения обновления Android 5.0 ни один из телефонов не сможет запустить приложение.Android 5.0 не поддерживает samplerExternalOES?

Через отладки, я вижу, что приложение падает на GLES20.glLinkProgram (программа)

я вижу следующее сообщение об ошибке после компиляции шейдера, который происходит только при запуске Android 5,0

E/Adreno-ES20 :: Недопустимый формат текстуры! Возвращаемая ошибка! E/Adreno-ES20:: Неверное оформление цвета Framebuffer. Возврат GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT!

Что у меня в шейдера:

#extension GL_OES_EGL_image_external : require 
// Image texture. 
uniform samplerExternalOES sTexture; 
precision mediump float; 

. , ,

Кто-нибудь видел этот вопрос раньше?

+0

Удалось ли узнать причину? – Newts

+0

К сожалению нет :(Я удалил приложение из игры Google. Я планировал начать расследование еще раз за 2 недели. Я просто догнал другие вещи. – Makketronix

+0

Просто, чтобы убедиться, что я правильно понял: * inside ** 'glLinkProgram()' Было ли успешным компиляция шейдеров, что означает, что 'GL_COMPILE_STATUS' истинно? –

ответ

0

Итак, после обновления Android 6.0 эта проблема исчезла.

Итак, для Android 4.x это работает, 5 не работает, и 6.0 работает. Я называю эту проблему с Android 5.0.

0

Некоторые документы:

https://www.khronos.org/registry/gles/extensions/OES/OES_EGL_image_external.txt

Из-за этих ограничений, можно связывания EGLImages, которые имеют внутренние форматы не иначе поддерживаемые OpenGL ES. Например, некоторые реализации могут позволить EGLImages с плоскими или чередующимися данными YUV с быть объектами-мишенями текстуры GLES. Это до реализации, в какой форме принимаются форматы.

Похоже, что, возможно, принятые форматы изменены? Я бы проверил ваш формат и посмотрел, была ли поддержка удалена для него, или если это ошибка.

+0

Ну, формат работает на что угодно до 5.0. После 5.0 он перестает работать. bug? – Makketronix

+0

Извините, что я действительно не знаю. – mlepage

+1

Предположим, что количество ошибок в OpenGLES для Android равно количеству API с версии 16, умноженное на количество существующих графических процессоров, умноженное на среднее число из 5 ошибок для каждый графический процессор. –

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