Я обнаружил, что большая часть примера исходного кода EGL с использованием NativeActivity (NVIDIA, Sony Ericsson), с использованием или без использования библиотеки native-app-glue, имеет эту проблему.
Проблема заключается в том, что вНа некоторых устройствах окно, которое вы получаете при получении APP_CMD_INIT_WINDOW после возврата из спящего режима, отличается от того, которое вы используете при инициализации.Большинство инициализаций EGL, которые я видел в примере вызова кода eglChooseConfig
, с жестко закодированным массивом атрибутов (обычно тот, который подходит для флагманского устройства этого производителя).
Вы должны проверить формат окна с помощью ANativeWindow_getFormat
и выбирать конфигурацию 565 EGL только тогда, когда NativeWindow имеет WINDOW_FORMAT_RGB_565
, в других случаях используйте конфигурацию 888.
Вы можете использовать два массива атрибутов или, что еще лучше, вы можете получить все конфигурации из eglChooseConfig, использовать eglGetConfigAttrib
, чтобы получить значения (глубина, трафарет и т. Д.) И искать тот, который имеет в точности значенияты хочешь.Возможно, он не имеет точно заданного вами размера глубины или размера трафарета, но у вас должна получиться конфигурация с большим трафаретом или буфером глубины.