Spec-Zone.ru › Qt 5.15

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

QVector<GLuint> QOpenGLTimeMonitor::objectIds() const

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

int QOpenGLTimeMonitor::recordSample()

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

См. также 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.15/qopengltimemonitor.html

Spec-Zone.ru

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