Spec-Zone.ru › Qt 5.14

Класс QOpenGLTimeMonitor

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

Заголовок: #include <QOpenGLTimeMonitor>
qmake: QT += gui
С тех пор: Qt 5.1
Наследует: QObject

Этот класс был представлен в Qt 5.1.

  • Список всех членов, включая унаследованные

Публичные функции

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

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

Класс 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(), возвращаемое значение будет фактическим количеством точек выборки, которые могут быть использованы.

Значение по умолчанию для sample count — 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.14/qopengltimemonitor.html

Spec-Zone.ru

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