Утилита OES_get_program_binary довольно четко описана в самой спецификации расширения.
На устройствах OpenGL ES обычным способом использования шейдеров является их прекомпиляция для каждого конкретного устройства.Тем не менее, существует много графических процессоров.Даже если предположить, что каждый графический процессор в пределах определенного поколения может запускать одни и те же предварительно скомпилированные шейдеры (что почти наверняка не верно во многих случаях), это все равно означает, что вам нужны отдельные предварительно скомпилированные шейдеры для Tegra2, один для PowerVR Series5 графических процессоров, PowerVR серии 5X и текущий графический процессор Qualcomm.И , что не учитывает мобильные графические процессоры следующего поколения, такие как PowerVR Series 6 и Tegra 3, и все, что Qualcomm собирается выпустить в следующем.И любое количество других графических процессоров, о которых я не упомянул.
Единственная альтернатива - поставлять текстовые шейдеры и компилировать их по мере необходимости.Как вы можете себе представить, запуск компилятора на маломощных чипах ARM довольно дорог.
OES_get_program_binary предоставляет разумную альтернативу.Это позволяет вам взять скомпилированный, связанный программный объект и сохранить скомпилированный двоичный образ в локальное хранилище.Это означает, что когда вы снова загружаете эту программу, вам не нужно загружать ее из текстовых шейдеров (если версия не изменилась);Вы можете загрузить его из двоичного файла напрямую.Это должно ускорить запуск приложений при последующих выполнениях.