Контрольный список для Создания OpenGL Приложения ES для iOS

OpenGL спецификация ES определяет независимый от платформы API для использования аппаратных средств GPU для рендеринга графики. Платформы реализовывая OpenGL , ES обеспечивает контекст рендеринга для выполнения команд OpenGL ES, кадровые буферы для содержания результатов рендеринга и одного или более мест назначения рендеринга, представляющих содержание кадрового буфера для дисплея. В iOS, EAGLContext класс реализует контекст рендеринга. iOS обеспечивает только один тип кадрового буфера, OpenGL объект кадрового буфера ES, и GLKView и CAEAGLLayer классы реализуют места назначения рендеринга.

Создание OpenGL , приложение ES в iOS требует нескольких соображений, некоторые из которых универсальны к OpenGL программирование ES и некоторые из которых являются определенными для iOS. Следуйте этому контрольному списку и подробным разделам ниже для начала работы:

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

  2. Проверьте во время выполнения, что устройство поддерживает OpenGL возможности ES, которые Вы хотите использовать.

  3. Выберите, где представить Ваш OpenGL содержание ES.

  4. Удостоверьтесь свое выполнение приложения правильно в iOS.

  5. Реализуйте свой механизм рендеринга.

  6. Используйте XCode и Инструменты, чтобы отладить Ваш OpenGL приложение ES и настроить его для оптимальной производительности.

Выбор, который OpenGL версии ES для поддержки

Решите, должно ли Ваше приложение поддерживать OpenGL ES 3.0, OpenGL ES 2.0, OpenGL ES 1.1 или многократные версии.

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

Для создания контекстов для версий OpenGL ES, который Вы планируете поддерживать, читал Конфигурирование OpenGL Контексты ES. Чтобы изучить, как Ваш выбор OpenGL версия ES касается алгоритмов рендеринга, которые Вы могли бы использовать в своем приложении, считайте OpenGL Версии ES и Архитектура Средства рендеринга.

Проверка OpenGL возможности ES

Ссылка Совместимости устройства на iOS суммирует возможности и расширения, доступные на поставляющих устройствах на iOS. Однако, чтобы позволить Вашему приложению работать на как можно большем количестве устройств и версий iOS, Ваше приложение должно всегда запрашивать OpenGL реализация ES для ее возможностей во время выполнения.

Для определения реализации определенные пределы, такие как максимальный размер текстуры или максимальное количество атрибутов вершины ищите значение для соответствующего маркера (такой как MAX_TEXTURE_SIZE или MAX_VERTEX_ATTRIBS, как найдено в gl.h заголовок) использование надлежащего glGet функция для ее типа данных.

Для проверки на расширения OpenGL ES 3.0 используйте glGetIntegerv и glGetStringi функции как в следующем примере кода:

BOOL CheckForExtension(NSString *searchName)
{
    // Create a set containing all extension names.
    // (For better performance, create the set only once and cache it for future use.)
    int max = 0;
    glGetIntegerv(GL_NUM_EXTENSIONS, &max);
    NSMutableSet *extensions = [NSMutableSet set];
    for (int i = 0; i < max; i++) {
        [extensions addObject: @( (char *)glGetStringi(GL_EXTENSIONS, i) )];
    }
    return [extensions containsObject: searchName];
}

Для проверки на OpenGL ES 1.1 и 2,0 расширения вызвать glGetString(GL_EXTENSIONS) получить разделенный пробелами список всех дополнительных имен.

Выбор места назначения рендеринга

В iOS, кадровый буфер объектно-ориентированные памяти результаты команд рисования. (iOS не реализует предоставленные оконной системой кадровые буферы.) Можно использовать содержание объекта кадрового буфера многократными способами:

Для приобретения знаний о рендеринге к внеэкранному буферу текстура или Базовый Слой анимации, считала Получение в Другие Места назначения Рендеринга.

Интеграция с iOS

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

Много устройств на iOS включают дисплеи с высокой разрешающей способностью, таким образом, Ваше приложение должно поддерживать многократные размеры дисплея и разрешения.

Для приобретения знаний о том, чтобы поддерживать эти и другие функции iOS считайте Многозадачность, Высокое разрешение и Другие Функции iOS.

Реализация механизма рендеринга

Существует много возможных стратегий разработки Вашего OpenGL код для прорисовки ES, полное изложение которого выходит за рамки этого документа. Много аспектов рендеринга проекта механизма универсальны ко всем реализациям OpenGL и OpenGL ES.

Для приобретения знаний о конструктивных соображениях, важных для устройств на iOS, считайте OpenGL Руководство по проектированию ES и Параллелизм и OpenGL ES.

Отладка и профилирование

XCode и Инструменты обеспечивают много инструментов для того, чтобы разыскать проблемы рендеринга и анализ OpenGL производительность ES в Вашем приложении.

Для узнавания больше о решении проблем и улучшении производительности в OpenGL приложение ES считайте Настройку OpenGL Приложение ES.