Spec-Zone.ru › Qt 5.12

Класс QOpenGLTimeMonitor

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

Заголовок: #include <QOpenGLTimeMonitor>
qmake: QT += gui
С: Qt 5.1
Наследует: QObject
  • Список всех членов, включая унаследованные
  • Устаревшие члены

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

QOpenGLTimeMonitor(QObject *parent = nullptr)
virtual ~QOpenGLTimeMonitor()
bool create()
void destroy()
bool isCreated() const
bool isResultAvailable() const
QVector<GLuint> objectIds() const
int recordSample()
void reset()
int sampleCount() const
void setSampleCount(int sampleCount)
QVector<GLuint64> waitForIntervals() const
QVector<GLuint64> waitForSamples() const
  • 31 открытая функция унаследованная от QObject

Статические открытые члены

const QMetaObject staticMetaObject
  • 9 статических открытых членов унаследованных от QObject

Дополнительные унаследованные члены

  • 1 свойство унаследованное от QObject
  • 1 открытый слот унаследованный от QObject
  • 2 сигналы унаследованные от QObject
  • 9 защищенные функции унаследованные от QObject

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

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

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

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

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

Перед использованием 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().

QVector<GLuint> QOpenGLTimeMonitor::objectIds() const

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

int QOpenGLTimeMonitor::recordSample()

Выполняет запрос таймера OpenGL в данный момент в очереди команд OpenGL. Вызов этой функции в последовательности в функции рендеринга вашего приложения соберет детали времени GPU, затраченного на выполнение команд 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().

QVector<GLuint64> QOpenGLTimeMonitor::waitForIntervals() const

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

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

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

QVector<GLuint64> QOpenGLTimeMonitor::waitForSamples() const

Возвращает QVector, содержащий отметки времени 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-5.12/qopengltimemonitor.html

Spec-Zone.ru

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