Spec-Zone.ru › Qt 6.0

Класс QOpenGLTimeMonitor

Класс QOpenGLTimeMonitor оборачивает последовательность объектов запросов таймера OpenGL. Подробнее...

Заголовок: #include <QOpenGLTimeMonitor>
CMake: find_package(Qt6 COMPONENTS OpenGL REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::OpenGL)
qmake: QT += opengl
С момента: Qt 5.1
Наследуется от: QObject
  • Список всех членов, включая наследуемые

Открытые функции

QOpenGLTimeMonitor(QObject *parent = nullptr)
virtual ~QOpenGLTimeMonitor()
bool create()
void destroy()
bool isCreated() const
bool isResultAvailable() const
QList<GLuint> objectIds() const
int recordSample()
void reset()
int sampleCount() const
void setSampleCount(int sampleCount)
QList<GLuint64> waitForIntervals() const
QList<GLuint64> waitForSamples() const

Подробное описание

Класс QOpenGLTimeMonitor — это удобная оболочка вокруг набора объектов запросов таймера OpenGL, используемых для измерения интервалов времени на графическом процессоре с точностью, необходимой вашему приложению для рендеринга.

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

Типичный сценарий использования этого класса — профилирование алгоритмов рендеринга вашего приложения или их настройка в режиме реального времени для динамического балансирования производительности/качества.

Перед использованием QOpenGLTimeMonitor в вашей функции рендеринга необходимо задать требуемое количество точек выборки, которые вы хотите записать, вызвав setSamples(). Обратите внимание, что измерение N точек выборки приведет к получению N-1 интервалов времени. После того, как вы задали количество точек выборки, вызовите функцию create() с корректным текущим контекстом OpenGL для создания необходимых объектов запросов таймера. Эти шаги, как правило, выполняются один раз в функции инициализации.

Используйте функцию recordSample() для разграничения блоков кода, содержащих команды OpenGL, время выполнения которых вы хотите измерить. Вы можете проверить доступность полученных временных выборок и интервалов времени с помощью isResultAvailable(). Вычисленные интервалы времени и исходные временные метки могут быть извлечены с помощью блокирующих функций waitForIntervals() и waitForSamples() соответственно.

После извлечения результатов и перед началом нового цикла сбора выборок (например, в следующем кадре) обязательно вызовите функцию reset(), которая очистит кэшированные результаты и сбросит индекс таймера обратно к первому объекту таймера.

См. также QOpenGLTimerQuery.

Документация по функциям-членам

QOpenGLTimeMonitor::QOpenGLTimeMonitor(QObject *parent = nullptr)

Создает экземпляр QOpenGLTimeMonitor с заданным parent. Перед использованием необходимо вызвать create() с корректным контекстом OpenGL.

См. также setSampleCount() и create().

[virtual] QOpenGLTimeMonitor::~QOpenGLTimeMonitor()

Удаляет QOpenGLTimeMonitor и все основанные на OpenGL ресурсы.

bool QOpenGLTimeMonitor::create()

Инициализирует sampleCount() объектов запросов таймера OpenGL, которые будут использоваться для отслеживания времени выполнения команд OpenGL между последовательными вызовами recordSample().

Возвращает true если объекты запросов таймера OpenGL были созданы.

См. также destroy(), setSampleCount(), и recordSample().

void QOpenGLTimeMonitor::destroy()

Удаляет любые объекты запросов таймера OpenGL, используемые в этом экземпляре.

См. также create().

bool QOpenGLTimeMonitor::isCreated() const

Возвращает true если основанные на OpenGL объекты запроса были созданы. Если это возвращает true, и связанный с ним контекст OpenGL является текущим, то вы можете записывать временные выборки с помощью этого объекта.

bool QOpenGLTimeMonitor::isResultAvailable() const

Возвращает true если результаты запросов таймера OpenGL доступны.

См. также waitForSamples() и waitForIntervals().

QList<GLuint> QOpenGLTimeMonitor::objectIds() const

Возвращает QList, содержащую идентификаторы объектов запросов таймера OpenGL.

int QOpenGLTimeMonitor::recordSample()

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

См. также setSampleCount(), isResultAvailable(), waitForSamples() и waitForIntervals().

void QOpenGLTimeMonitor::reset()

Сбрасывает монитор времени, чтобы он был готов к использованию в другом кадре рендеринга. Вызовите эту функцию после получения предыдущих результатов и до первого вызова recordSample() в следующем кадре.

См. также recordSample().

int QOpenGLTimeMonitor::sampleCount() const

Возвращает количество точек выборки, которые были запрошены с помощью setSampleCount(). Если create был успешно вызван после setSampleCount(), возвращаемое значение будет фактическим количеством точек выборки, которые могут быть использованы.

Значение по умолчанию для количества выборок равно 2, что приводит к измерению одного интервала.

См. также setSampleCount().

void QOpenGLTimeMonitor::setSampleCount(int sampleCount)

Устанавливает количество точек выборки в sampleCount. После установки количества выборок с помощью этой функции необходимо вызвать create() для инициализации базовых объектов запросов таймера OpenGL.

Новое sampleCount должно быть не менее 2.

См. также sampleCount(), create(), и recordSample().

QList<GLuint64> QOpenGLTimeMonitor::waitForIntervals() const

Возвращает QList, содержащую интервалы времени, разделяемые вызовами recordSample(). Результирующий вектор будет содержать на один элемент меньше, так как это представляет интервалы между ними, а не фактические временные метки.

Эта функция будет блокироваться до тех пор, пока OpenGL не укажет, что результаты доступны. Рекомендуется проверить доступность результата перед вызовом этой функции с помощью isResultAvailable().

END_OF_DOCUMENT_MARKER

См. также waitForSamples() и isResultAvailable().

QList<GLuint64> QOpenGLTimeMonitor::waitForSamples() const

Возвращает QList, содержащий отметки времени GPU, полученные с помощью recordSample().

Эта функция будет блокироваться, пока OpenGL не укажет, что результаты доступны. Рекомендуется проверить доступность результата перед вызовом этой функции с помощью isResultAvailable().

Примечание: Эта функция работает только на системах с OpenGL >=3.3 или расширением ARB_timer_query. Дополнительные сведения см. в QOpenGLTimerQuery.

См. также waitForIntervals() и isResultAvailable().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qopengltimemonitor.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API