Начало работы

Пользователи ожидают, что приложения OpenGL будут иметь жидкую графику тот дисплей без незначительных сбоев. Чем более сложный графика в приложении OpenGL, тем более важный это для Вас для оптимизации производительности и ресурсов использования мудро. Когда приложение OpenGL выполняет менее оптимально, чем желаемый, причина часто не очевидна. Это - то, где Профилировщик OpenGL может быть значим для Вас. Загрузите приложение GraphicsTools с http://developer .apple.com/downloads.

Эта глава:

Прежде, чем считать эту главу, можно хотеть считать “Улучшающуюся Производительность” глава в Руководстве по программированию OpenGL для Mac. Та глава обеспечивает список лучших практик программирования для OpenGL и показывает, как собрать базовые данные с помощью нескольких инструментов Apple в дополнение к Профилировщику OpenGL. Фактически, до использования Профилировщика OpenGL, лучше запускать Ваш анализ с Инструментов. Результаты Инструментов помогут Вам определить, как фокусировать Ваши усилия с Профилировщиком OpenGL, или необходимо ли даже использовать приложение профилировщика. Может случиться так, что проблемы Вашего приложения не вследствие Вашего кода OpenGL!

Обзор

Профилировщик OpenGL собирает трассировку и статистику для приложений то использование OpenGL. Трассировка является упорядоченным списком вызовов OpenGL, выполненных приложением. Каждая запись в трассировке показывает имя функции, и значения параметров передали функции. Статистические данные показывают кумулятивные общие количества, функцией, для числа раз, приложение вызывает функцию и время выполнения функции. Можно также видеть среднее время выполнения для функции, процента времени, функция используется OpenGL и процентом времени, функция используется приложением.

Функции OpenGL, которые Вы будете видеть в трассировке и статистике, включают определенных спецификацией OpenGL (см. http://www .opengl.org), а также функции, которые являются частью низкоуровневого OS X интерфейсы программирования OpenGL — CGL. (См. Ссылку CGL.)

Профилировщик OpenGL также полезен для проверки и управления различными аспектами Вашего приложения. Например, Вы можете:

Перед Использованием профилировщика OpenGL в системе

Если Вы никогда не использовали Профилировщика OpenGL в своей системе, если Вы хотите позволить профилировщику присоединять к запущенному приложению, необходимо установить переменную окружения GL_ENABLE_DEBUG_ATTACH. Вы также могли бы хотеть установить предпочтения.

Установка переменных окружения

Существует два расположения, требующие переменной окружения:

  • Ваш файл запуска оболочки. Имя этого файла зависит от оболочки, которую Вы используете: ~/.login, ~/.cshrc, ~/.bashrc, ~/.profile, и т.д. Добавьте следующий к надлежащему файлу оболочки:

    setenv GL_ENABLE_DEBUG_ATTACH YES
  • Файл списка свойств среды OS X (~/.MacOSX/environment.plist). Средство поиска использует этот файл для установки переменной окружения, когда это запускает приложения. Обычно Профилировщик OpenGL создает этот файл для Вас в первый раз, когда Вы запускаете Профилировщика OpenGL в системе. В первый раз, когда Вы запускаете приложение, необходимо видеть диалоговое окно, спрашивающее, хотите ли Вы активировать опцию Attach. Нажмите Enable для создавания файла списка свойств для Вас.

    Можно пропустить остальную часть этого раздела, если по некоторым причинам не отсутствует файл списка свойств. Если это так, для использования функции Attach необходимо будет создать файл простого текста, назвать ее environment.plist, и введите следующее в файл:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
            <key>GL_ENABLE_DEBUG_ATTACH</key>
            <string>YES</string>
    </dict>
    </plist>

    Скопируйте файл в Ваш ~/.MacOSX каталог. Если каталог не существует, открывает Terminal и создает каталог из Вашей оболочки.

Установка предпочтений (Необязательно)

Можно просмотреть предпочтения путем выбора OpenGL Profiler> Preferences. Можно установить следующее:

  • Интервал метра частоты кадров, позволяющий Вам изменять считывание кадров в секунду от Вас приложение. При необходимости в более прекрасной мелкой частице измерения и большего количества непосредственного результата Вы могли бы хотеть увеличить эту стоимость.

  • Функциональный демонстрационный интервал в представлении статистики

  • Число частей для хранения в представлении статистики. Можно ограничить число синхронизации выборок тот Профилировщик OpenGL записи.

  • Шрифт представления трассировки. Можно установить поверхность шрифта и размер шрифта.

  • Проследите файл данных. Можно изменить расположение файла и имя.

OpenGL Profiler Preferences

Запуск профильного сеанса

Когда Вы дважды щелкаете по значку OpenGL Profiler, окно, показанное на рисунке 1-1, открывается. Вы используете это окно для установки профильного сеанса. Можно начать профилировать приложение или путем запуска его через Профилировщика OpenGL или путем присоединения профилировщика к приложению, которое это уже запускает.

Рисунок 1-1  главное окно в Профилировщике OpenGL
The main window in OpenGL Profiler

Прежде чем Вы присоедините или запустите свое приложение, выберите Collect Trace. У Вас также есть опция собрать следы. После Ваших запусков приложения или присоединений, можно видеть маленькие паузы или задержки в приложении. Это - нормальное поведение, которое является вследствие большого объема данных, который Профилировщик OpenGL выписывает при сборе трассировки. Это не значительно влияет на статистику производительности.

Присоединение к запущенному приложению

Присоединить Профилировщика OpenGL к запущенному приложению:

  1. Выберите «Attach to application».

  2. В списке, появляющемся, выберите приложение, которое Вы хотите профилировать.

    Choosing an application to attach to OpenGL Profiler.
  3. Нажмите Attach.

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

    Профилировщик OpenGL начинает собирать данные, как только они присоединяют к Вашему приложению. Когда Вы выходите из приложения или нажимаете кнопку Detach в окне OpenGL Profiler, сбор данных заканчивается. Можно временно остановить сбор данных путем щелчка по Suspend.

    Отсоединение позволяет приложению продолжать работать, который полезен для приложений (как инструменты оболочки), которые не имеют пользовательского интерфейса.

Запуск приложения от профилировщика OpenGL

Устанавливать Профилировщика OpenGL для запуска приложения:

  1. Выберите «Launch application».

  2. Щелкните плюс (+) кнопка и перейдите к приложению, которое Вы хотите профилировать, затем выбрать ее.

    Можно добавить столько приложений, сколько Вы хотели бы, но можно профилировать только по одному.

  3. Если Ваши параметры запуска потребностей приложения, щелкните по текстовому полю Launch Arguments и добавьте их.

  4. Щелкните по треугольнику раскрытия для просмотра дополнительных настроек запуска.

    Когда Вы хотите профилировать приложение при особых условиях, можно использовать эти настройки. Например, можно использовать пользовательский формат пикселя, моделировать, как приложение работало бы с помощью определенного графического драйвера и установило бы переменные новой среды. Посмотрите Настройки Запуска Настройки для подробных данных.

  5. Нажмите Launch.

    Состояние изменяется от неактивного до выполнения, и приложения и тусклых списков переменных окружения.

    Профилировщик OpenGL начинает собирать данные, как только они запускают Ваше приложение. Когда Вы выходите из приложения или нажимаете кнопку Kill в окне OpenGL Profiler, сбор данных заканчивается. Можно временно остановить сбор данных путем щелчка по Suspend.

Настройка настроек запуска

Щелкните по треугольнику раскрытия затем для Запуска Настроек в окне OpenGL Profiler, чтобы настроить, как запускается приложение. Эти опции позволяют Вам наблюдать, как Ваше приложение работает при особых условиях.

Launch Settings in the OpenGL Profiler window.

Установка пользовательского формата пикселя

Выберите «Use custom pixel format» и нажмите Edit для испытания различных настроек для атрибутов формата пикселя. Можно быстро видеть результаты изменения значений атрибута, не изменяя исходный код приложения.

The Custom Pixel Format window.

Используя эмуляцию драйвера

Профилировщик OpenGL содержит параметры и оценивает за множество драйверов OpenGL, не только доступных в системе, которую Вы в настоящее время выполняете. Эта функция пригождается, если Вы хотите исследовать значения, которые OpenGL возвращает для определенного драйвера. Режим Emulation не влияет на производительность Вашего приложения всегда. Цель этой функции состоит в том, чтобы помочь Вам определить, работает ли код, зависящий от определенных аппаратных функций, должным образом. Следует иметь в виду, что Профилировщик OpenGL не заменяет драйверы Ваша система.

При использовании эмуляции драйвера Профилировщик OpenGL делает изменяет возвращаемые значения для части из glGet функции. Например, если Вы включаете Гневу 128 эмуляторов для OS X v10.2 и ранее, вызывая glGetString(GL_RENDERER) возвраты "ATi Rage 128 Pro OpenGL Engine" вместо средства рендеринга это находится фактически в Вашей системе. Кроме того, любой glGet функции, возвращающие специфичные для драйвера параметры, возвратят значения, которые Вы получили бы, если бы Ваше приложение работало на эмулированной карте. Например, вызов glGetInteger(GL_MAX_LIGHTS, &maxLights) присваивается 8 к maxLights.

Установить определенный драйвер:

  1. Выберите драйвер из всплывающего меню.

    The graphics driver pop-up menu.
  2. Нажмите View для проверки параметров и значений для драйвера.

    The Emulator Inspector window.

Apple обеспечивает ряд файлов эмуляции драйвера. Это списки свойств, которые можно отредактировать сами. Можно создать файл эмуляции для драйвера не в списке при помощи текстового редактора и затем сохранить файл в этом каталоге:

~/Library/OpenGL Profiler/Driver Emulators

Необходимо будет перезапустить Профилировщика OpenGL для наблюдения нового файла в списке драйвера.

Установка переменных окружения

Можно добавить переменные окружения путем щелчка плюс (+) кнопка. Тогда введите имя переменной и его значение. Можно добавить любую переменную использование чтений приложения getenv(3).

Установка рабочего каталога

Рабочий каталог обращается к текущему рабочему каталогу Вашего приложения. Это - путь, возвращенный функцией getcwd(3) и тот же путь это автоматически предварительно ожидается к любому относительному пути в Вашем приложении. Если Ваше приложение не соответствует схеме обертки приложения Apple, необходимо установить рабочий каталог так, чтобы приложение могло найти ресурсы, такие как текстурные карты.

Например, если Вы запускаете не соответствующее приложение от Средства поиска для этой строки кода для выполнения должным образом:

fopen("mytexture", "r+")

необходимо установить рабочий каталог в содержащую папку "mytexture".

Просмотр трассировки

Можно просмотреть трассировку путем выбора Views> Trace. Окно Trace выводит на экран рабочий список вызовов функции OpenGL, которые делает Ваше приложение. Временная стоимость рядом с именем функции дает Вам общее представление о стоимости производительности вызова. Следует иметь в виду, что на большое количество битов набора вызовов OpenGL и реагируют только при получении или сбрасывает время. Это означает, что в дополнение к взгляду в это время для определенной функции, также необходимо рассмотреть время выполнения следующего получения или функции сброса.

The Trace data window.The Trace data window.

Для стратегий относительно интерпретации данных трассировки см.:

Просмотр статистики

Выберите Views> Statistics для открытия окна Statistics. Это представление агрегировало данные трассировки так, чтобы Вы видели частоту вызова функции, суммы времени выполнения и средние числа и эти проценты:

The Statistics window.

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

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

Для других стратегий относительно интерпретации данных статистики см.:

Просмотр параметров контекста формата пикселя

Для просмотра параметров контекста для формата пикселя приложения выберите Views> Pixel Format. Для каждого контекста OpenGL Вы будете видеть список его параметров и значения для каждого параметра.

The Pixel Format window.