Управление профилированием программно
Можно добавить код к приложению, позволяющему ему взаимодействовать с Профилировщиком OpenGL во время профильного сеанса. Эта глава показывает Вам, как выполнить эти задачи программно:
Установка точки останова
Ваше приложение может программно установить точки останова, когда оно присоединено к Профилировщику OpenGL.
Установить точку останова:
Включайте
CGLProfiler.h
иCGLProfilerFunctionEnum.h
заголовочные файлы в Вашем приложении.Объявите массив три
GLint
значения, набор к следующему:Функциональный ID, как определено в заголовочном файле
CGLProfilerFunctionEnum.h
.Логическое
OR
изkCGLProfBreakBefore
илиkCGLProfBreakAfter
, указание, как Вы хотите, чтобы точка останова остановилась — прежде, чем ввести функцию OpenGL по возврату из него или обоим.Булевская переменная, включающая или выключающая точку останова.
Вызовите функцию
CGLSetOption
, передача массива в качестве параметра.
Перечисление 4-1 показывает код, устанавливающий точку останова перед CGLFlushDrawable
функция.
Код перечисления 4-1, устанавливающий точку останова
#include "OpenGL/CGLProfiler.h" |
#include "OpenGL/CGLProfilerFunctionEnum.h" |
... |
GLint myBreakpoint[] = { kCGLFECGLFlushDrawable, kCGLProfBreakBefore, 1;} |
CGLSetOption( kCGLGOEnableBreakpoint, myBreakpoint ); |
... |
Запись комментариев к окну трассировки
Ваше приложение может программно записать комментарии в окно Trace во время профильного сеанса. Записать комментарии:
Включайте
CGLProfiler.h
заголовочный файл в Вашем приложении.Вызовите функцию
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.
Управлять набором трассировки:
Включайте
CGLProfiler.h
заголовочный файл в Вашем приложении.Вызовите функцию
CGLSetOption
с константойkCGLGOEnableFunctionTrace
и такжеGL_TRUE
(для включения набора трассировки) илиGL_FALSE
(для выключения набора трассировки).
Перечисление 4-3 показывает код, включающий набор трассировки.
Код перечисления 4-3, включающий набор трассировки
#include <OpenGL/CGLProfiler.h> |
... |
CGLSetOption(kCGLGOEnableFunctionTrace, GL_TRUE); |
... |
Очистить окно Trace:
Включайте
CGLProfiler.h
заголовочный файл в Вашем приложении.Вызовите функцию
CGLSetOption
с константойkCGLGOResetFunctionTrace
и значениеNULL
.
Перечисление 4-4 показывает код, включающий набор трассировки.
Код перечисления 4-4, очищающий окно Trace
#include <OpenGL/CGLProfiler.h> |
... |
CGLSetOption(kCGLGOResetFunctionTrace, NULL); |
... |
Управление набором статистики
Вы, которыми может программно управлять приложение, когда запустить и прекратить собирать статистические данные. Необходимо удостовериться, что окно Statistics в Профилировщике OpenGL открыто при профилировании приложения.
Управлять набором статистики:
Включайте
CGLProfiler.h
заголовочный файл в Вашем приложении.Вызовите функцию
CGLSetOption
с константойkCGLGOResetFunctionStatistics
и значениеNULL
сначала сбрасывать счетчики к 0. Этот шаг является дополнительным.Вызовите функцию
CGLSetOption
с константойkCGLGOResetFunctionStatistics
и значениеGL_TRUE
запустить набор статистики.Когда Вы сделаны, собрав статистические данные, вызываете функцию
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); |
... |