Используя точки останова
Можно использовать Профилировщика OpenGL для установки точек останова в приложении. Точка останова может произойти прежде или после определенной функции OpenGL, когда Ваше приложение использует средство рендеринга программного обеспечения, или когда происходит конфликт ошибки или потока. Когда Ваше приложение приостанавливается, можно выполнить много задач, включая:
Исследование состояния вызова и состояния OpenGL
Просмотр и изменение ресурсов
Просмотр содержимого буфера
Выполнение сценария, который Вы присоединяете к точке останова
Можно также принять решение отключить выполнение одной или более функций OpenGL.
В этой главе описываются, как установить точки останова и описывает все задачи, которые можно выполнить только после пауз приложения в точке останова.
Установка точек останова на функциях OpenGL
Вы устанавливаете точки останова в окне Breakpoints. Для открытия этого окна выберите Views> Breakpoints. Как показано на рисунке 2-1, левая сторона окна перечисляет функции OpenGL, на которых можно установить точки останова. Этот список включает функции, определяемые спецификацией OpenGL и вызовами CGL, доступными в OS X. Следует иметь в виду, что функции AGL и Какао вызов методов класса OpenGL в платформу CGL, таким образом, AGL и методы Какао не находятся явно в функциональном списке.
Правая сторона окна позволяет Вам просмотреть стек вызовов, как показано на рисунке 2-1 или переменных состояния OpenGL, как показано на рисунке 2-2.
Для установки точки останова выберите функцию OpenGL в функциональном списке, на котором Вы хотите установить точку останова. Тогда щелкните по одному из следующих столбцов:
Прежде приостанавливает Ваше приложение непосредственно перед тем, как оно выполняет функцию OpenGL.
После приостанавливает Ваше приложение сразу после того, как оно выполнит функцию OpenGL.
Синий индикатор появляется везде, где Вы устанавливаете точку останова.
Флажки ниже функционального списка позволяют Вам установить условия точки останова. Можно также включить и выключить функциональные точки останова списка быстро путем выбора «Ignore all breakpoints».
Просмотр и изменение ресурсов
Ресурсы OpenGL включают текстуры, программы, программы построения теней, объекты кадрового буфера, renderbuffer объекты, буферные объекты вершины и объекты массива вершины. Можно просмотреть эти ресурсы путем выбора Views> Resources. Правая сторона окна Resources позволяет Вам выбрать тип ресурса. Вы видите отдельные ресурсы для типов ресурсов, которые Ваше приложение использует, перечисленный в левой стороне. Щелкните по имени ресурса для просмотра его настроек и другой релевантной информации о правой стороне. Например, посмотрите рисунок 2-3, показывающий два буферных объекта вершины. Параметры и значения для того, которое это выбрано, показаны на правой стороне.
Когда Ваши паузы приложения в точке останова, можно изменить программы и программы построения теней. Модификации вступают в силу, когда Ваше приложение возобновляется, позволяя Вам надеть непосредственную обратную связь, как изменения производят поведение Вашего приложения. Для получения дополнительной информации см.:
Можно сделать модификации к текстурам и renderbuffers, но они влияют только на представление в окне ресурса, допуская лучше или корректном просмотре в Профилировщике OpenGL. Для получения дополнительной информации см.:
Изменение параметров дисплея текстуры
Можно изменить, как текстура выводит на экран путем изменения ее уровня множественного отображения, уровня изменения масштаба, источника и целевых режимов смешивания, и цвета фона и непрозрачности. Вы не можете изменить цель текстуры, внутренний формат, исходный формат, исходный тип или размерности. Следует иметь в виду, что модификации влияют только, что Вы видите в окне Resources.
Изменить параметры дисплея для текстуры:
Нажмите Textures в окне Resources.
Имена текстуры перечислены слева, как показано на рисунке 2-4.
Выберите имя текстуры.
Измените параметры дисплея, которые требуется изменить.
Необходимо видеть, что изменения сразу вступают в силу.
Нажмите Continue в окне Breakpoints.
Необходимо обновить текстуру, только если приложение изменяет ее после открытия окна Resources.
Изменение программ
Программа подобна программе построения теней, в которой она описывает исходный код, изменяющий данные в вершине GPU или конвейере фрагмента. Программы были доступны для кодирования вершины и операций фрагмента до программ построения теней. Они используют тайный язык кодирования по сравнению с подобным C синтаксисом, используемым для Языка Штриховки OpenGL. Перечисление 2-1 показывает программу для основной программы построения теней.
Перечисление 2-1 программа для основной программы построения теней
!!ARBvp1.0 |
ATTRIB vertexPosition = vertex.position; |
OUTPUT outputPosition = result.position; |
# Transform the vertex by the modelview/projection matrix |
DP4 outputPosition.x, state.matrix.mvp.row[0], vertexPosition; |
DP4 outputPosition.y, state.matrix.mvp.row[1], vertexPosition; |
DP4 outputPosition.z, state.matrix.mvp.row[2], vertexPosition; |
DP4 outputPosition.w, state.matrix.mvp.row[3], vertexPosition; |
# Pass the color and texture coordinate through |
MOV result.color, vertex.color; |
MOV result.texcoord, vertex.texcoord; |
END |
Изменить код программы:
Нажмите Programs в окне Resources.
Выберите программу из списка слева.
Измените код.
Нажмите Compile.
Нажмите Continue в окне Breakpoints.
Когда приложение возобновляется, необходимо видеть результат измененной программы.
Изменение программ построения теней
Программы построения теней являются маленькими программами, записанное использование Язык Штриховки OpenGL, которые вычисляют поверхностные свойства. OpenGL позволяет Вам изменить программы построения теней, которые являются частью Вашего приложения, предоставляя Вам возможность получить непосредственную обратную связь на изменениях.
Изменить программу построения теней:
Нажмите Shaders в окне Resources.
Объекты программы построения теней перечислены слева, как показано на рисунке 2-5.
Выберите объект программы построения теней из списка слева.
Нажмите Source и измените код программы построения теней.
Нажмите Compile.
Если компиляция перестала работать, нажмите Log для исследования ошибок. Можно возвратиться к исходному коду путем щелчка по Revert.
Если компиляция успешно выполняется, выпустите точку останова и нажмите Continue в представлении точек останова.
Изменение Renderbuffer
renderbuffer является внеэкранным местом назначения рендеринга для 2D пиксельного изображения. Renderbuffers определяются в спецификации OpenGL для расширения GL_EXT_framebuffer_object. Профилировщик OpenGL позволяет Вам изменить, как содержание renderbuffer выводит на экран путем изменения его уровня изменения масштаба, источника и целевых режимов смешивания, и цвета фона и непрозрачности. Вы не можете изменить цель renderbuffer, исходный формат, исходный тип или размеры изображения. Следует иметь в виду, что модификации влияют только, что Вы видите в окне Resources.
Изменить параметры дисплея объекта renderbuffer:
Нажмите Renderbuffers в окне Resources.
Объекты renderbuffer перечислены слева, как показано на рисунке 2-6.
Выберите объект renderbuffer.
Измените параметры дисплея, которые требуется изменить.
Необходимо видеть, что изменения сразу вступают в силу.
Нажмите Continue в окне Breakpoints.
Необходимо обновить изображение, только если приложение изменяет его после открытия окна Resources.
Просмотр буферов
Можно просмотреть содержание буфера OpenGL путем выбора Views> Buffers и затем выбора буфера — Передний Буферный, Обратный Буфер, Альфа-Буфер, Буфер шаблонов или Буфер глубины. Буферы, не используемые Вашим приложением, появляются, потускнел. Буферные представления доступны только когда Ваши паузы приложения в точке останова.
После выбора буфера его содержание появляется в окне. Каждый раз Ваши паузы приложения в точке останова, каждое буферное представление обновляет автоматически.
Рисунок 2-7 показывает содержание буфера глубины для приложения GLSLShowpiece, доступного от http://developer .apple.com.
Создание и присоединение сценариев к точке останова
Профилировщик OpenGL позволяет Вам выполнять (по стоимости производительности) мелкие суммы кода OpenGL или других вызовов сценариев когда Ваши паузы приложения в точке останова. Сценарий является текстовым файлом, содержащим вызовы функции OpenGL. Например, сценарий может быть столь же простым как следующая строка кода:
glClear(1.0, 0.0, 0.0, 1.0); |
Или это может быть более сложно, содержа много строк кода, таких как:
glBegin(GL_POINTS); |
glVertex3f(0,0,1); |
glVertex3f(1,0,1); |
glVertex3f(1,1,1); |
glVertex3f(0,1,1); |
glEnd(); |
Можно создать сценарий с помощью любого текстового редактора, или можно ввести сценарий непосредственно в окно Scripts.
Добавить сценарий:
Выберите Views> Scripts для открытия окна Scripts.
При создании сценария в текстовом редакторе нажмите Open, перейдите к сценарию и выберите его. Если Вы хотите создать сценарий в окне Scripts, щелкните плюс (+) кнопка, введите имя сценария, то введите команды в текстовом окне справа.
Любой сценарий, который Вы добавляете в окне Scripts, будет доступен из окна Breakpoints.
После того, как Вы добавите сценарий к Профилировщику OpenGL, можно или выполнить его вручную или присоединить его к точке останова.
Выполнить сценарий вручную когда Ваши паузы приложения в точке останова:
Выберите сценарий в окне Scripts.
Нажмите Execute.
Профилировщик OpenGL отправляет команды в Ваше приложение для выполнения. Ошибки в Вашем сценарии появляются в области, расположенной в нижнем левом из окна Scripts.
Присоединить сценарий к точке останова:
Откройте окно Breakpoints.
Выберите Actions> Attach Script.
В листе, появляющемся, выберите сценарий.
Выберите одну или более опций выполнения.
Можно принять решение сделать, чтобы Профилировщик OpenGL выполнил сценарий прежде, после, или и прежде и после функции OpenGL. Можно также принять решение иметь приложение, продолжаются после выполнения сценария.
Нажмите Attach.
Маленький значок документа появляется в списке функций рядом с синим индикатором точки останова для функции.
Для удаления сценария из точки останова выберите Actions> Remove Script.
Отключение выполнения OpenGL
При некоторых обстоятельствах Вы могли бы хотеть отключить выполнение одной или более функций OpenGL в Вашем приложении.
Для отключения выполнения всех функций OpenGL в приложении, в окне Breakpoints выбирают Actions> Execute ни один. Для включения выполнения выберите Actions> Execute все.
Для отключения выполнения отдельных функций OpenGL, в окне Breakpoints, выбирают функцию, Вы хотите отключить, и щелкнуть по столбцу Execute. Профилировщик OpenGL игнорирует набор точек останова на отключенных функциях. Для включения функции щелкните по столбцу Execute так, чтобы появился синий индикатор.