Управление профилированием программно

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

Установка точки останова

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

Установить точку останова:

  1. Включайте CGLProfiler.h и CGLProfilerFunctionEnum.h заголовочные файлы в Вашем приложении.

  2. Объявите массив три GLint значения, набор к следующему:

    • Функциональный ID, как определено в заголовочном файле CGLProfilerFunctionEnum.h.

    • Логическое OR из kCGLProfBreakBefore или kCGLProfBreakAfter, указание, как Вы хотите, чтобы точка останова остановилась — прежде, чем ввести функцию OpenGL по возврату из него или обоим.

    • Булевская переменная, включающая или выключающая точку останова.

  3. Вызовите функцию CGLSetOption, передача массива в качестве параметра.

Перечисление 4-1 показывает код, устанавливающий точку останова перед CGLFlushDrawable функция.

  Код перечисления 4-1, устанавливающий точку останова

#include "OpenGL/CGLProfiler.h"
#include "OpenGL/CGLProfilerFunctionEnum.h"
...
   GLint myBreakpoint[] = { kCGLFECGLFlushDrawable, kCGLProfBreakBefore, 1;}
   CGLSetOption( kCGLGOEnableBreakpoint, myBreakpoint );
...

Запись комментариев к окну трассировки

Ваше приложение может программно записать комментарии в окно Trace во время профильного сеанса. Записать комментарии:

  1. Включайте CGLProfiler.h заголовочный файл в Вашем приложении.

  2. Вызовите функцию CGLSetOption с константой kCGLGOComment и Ваш бросок комментария как длинное.

Перечисление 4-2 показывает код, пишущий комментарий, который похож на это в окне Trace:

21561: 0.00 µs /* ***** My Comment is here ***** */

  Код перечисления 4-2, пишущий комментарий в окно Trace

#include <OpenGL/CGLProfiler.h>
...
  CGLSetOption(kCGLGOComment, (long) "***** My Comment is here *****");
...

Управление набором трассировки

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

Управлять набором трассировки:

  1. Включайте CGLProfiler.h заголовочный файл в Вашем приложении.

  2. Вызовите функцию CGLSetOption с константой kCGLGOEnableFunctionTrace и также GL_TRUE (для включения набора трассировки) или GL_FALSE (для выключения набора трассировки).

Перечисление 4-3 показывает код, включающий набор трассировки.

  Код перечисления 4-3, включающий набор трассировки

#include <OpenGL/CGLProfiler.h>
...
  CGLSetOption(kCGLGOEnableFunctionTrace, GL_TRUE);
...

Очистить окно Trace:

  1. Включайте CGLProfiler.h заголовочный файл в Вашем приложении.

  2. Вызовите функцию CGLSetOption с константой kCGLGOResetFunctionTrace и значение NULL.

Перечисление 4-4 показывает код, включающий набор трассировки.

  Код перечисления 4-4, очищающий окно Trace

#include <OpenGL/CGLProfiler.h>
...
  CGLSetOption(kCGLGOResetFunctionTrace, NULL);
...

Управление набором статистики

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

Управлять набором статистики:

  1. Включайте CGLProfiler.h заголовочный файл в Вашем приложении.

  2. Вызовите функцию CGLSetOption с константой kCGLGOResetFunctionStatistics и значение NULL сначала сбрасывать счетчики к 0. Этот шаг является дополнительным.

  3. Вызовите функцию CGLSetOption с константой kCGLGOResetFunctionStatistics и значение GL_TRUE запустить набор статистики.

  4. Когда Вы сделаны, собрав статистические данные, вызываете функцию CGLSetOption с константой kCGLGOResetFunctionStatistics и значение GL_FALSE.

Перечисление 4-5 показывает код, счетчики сброса, запускающий набор статистики, и затем останавливающий его.

  Код перечисления 4-5, запускающий и останавливающий набор статистики

#include <OpenGL/CGLProfiler.h>
...
  // Reset counters to 0
  CGLSetOption(kCGLGOResetFunctionStatistics, NULL);
  // Start statistics collection
  CGLSetOption(kCGLGOEnableFunctionStatistics, GL_TRUE);
...
  // Stop statistics collection
  CGLSetOption(kCGLGOEnableFunctionStatistics, GL_FALSE);
...