Sur cette page

QOpenGLTimeMonitor Class

La classe QOpenGLTimeMonitor encapsule une séquence d'objets de requête de temporisateur OpenGL. En savoir plus...

En-tête : #include <QOpenGLTimeMonitor>
CMake : find_package(Qt6 REQUIRED COMPONENTS OpenGL)
target_link_libraries(mytarget PRIVATE Qt6::OpenGL)
qmake : QT += opengl
Hérite de : QObject

Fonctions publiques

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

Description détaillée

La classe QOpenGLTimeMonitor est un wrapper pratique regroupant une collection d’objets de requête de temporisation OpenGL utilisés pour mesurer des intervalles de temps sur le GPU, avec le niveau de granularité requis par votre application de rendu.

Les objets de requête de temporisateur OpenGL sont interrogés en séquence pour enregistrer les horodatages du GPU aux positions qui vous intéressent dans votre code de rendu. Une fois que les résultats de toutes les requêtes de temporisateur sont disponibles, ils peuvent être récupérés et QOpenGLTimeMonitor calculera pour vous les intervalles de temps enregistrés.

Cette classe est généralement utilisée soit pour profiler les algorithmes de rendu de votre application, soit pour ajuster ces algorithmes en temps réel afin d’équilibrer de manière dynamique les performances et la qualité.

Avant d’utiliser QOpenGLTimeMonitor dans votre fonction de rendu, vous devez définir le nombre requis de points d’échantillonnage que vous souhaitez enregistrer en appelant la fonction setSamples(). Notez que la mesure de N points d’échantillonnage produira N-1 intervalles de temps. Une fois le nombre de points d’échantillonnage défini, appelez la fonction ` create()` avec un contexte OpenGL courant valide afin de créer les objets de chronomètre de requête nécessaires. Ces étapes sont généralement effectuées une seule fois dans une fonction d’initialisation.

Utilisez la fonction ` recordSample()` pour délimiter les blocs de code contenant les commandes OpenGL dont vous souhaitez mesurer le temps d’exécution. Vous pouvez vérifier la disponibilité des échantillons de temps et des intervalles de temps obtenus à l’aide de ` isResultAvailable()`. Les intervalles de temps calculés et les échantillons d’horodatage bruts peuvent être récupérés respectivement à l’aide des fonctions bloquantes ` waitForIntervals()` et ` waitForSamples()`.

Après avoir récupéré les résultats et avant de lancer une nouvelle série d’échantillonnages (par exemple, dans l’image suivante), veillez à appeler la fonction reset(), qui effacera les résultats mis en cache et réinitialisera l’index du chronomètre au premier objet chronomètre.

Voir également QOpenGLTimerQuery.

Documentation des fonctions membres

[explicit] QOpenGLTimeMonitor::QOpenGLTimeMonitor(QObject *parent = nullptr)

Crée une instance de `QOpenGLTimeMonitor` avec l'parent` spécifiée. Vous devez appeler ` create()` avec un contexte OpenGL valide avant de l'utiliser.

Voir également setSampleCount() et create().

[virtual noexcept] QOpenGLTimeMonitor::~QOpenGLTimeMonitor()

Supprime l'objet « QOpenGLTimeMonitor » ainsi que toutes les ressources OpenGL associées.

bool QOpenGLTimeMonitor::create()

Instancie des objets de requête de temporisation OpenGL ( sampleCount()) qui serviront à mesurer le temps nécessaire à l'exécution des commandes OpenGL entre deux appels successifs à la fonction recordSample().

Renvoie ` true ` si les objets de requête de chronomètre OpenGL ont pu être créés.

Voir également destroy(), setSampleCount() et recordSample().

void QOpenGLTimeMonitor::destroy()

Supprime tous les objets de requête de temporisation OpenGL utilisés au sein de cette instance.

Voir également create().

bool QOpenGLTimeMonitor::isCreated() const

Renvoie « true » si les objets de requête OpenGL sous-jacents ont été créés. Si cette fonction renvoie « true » et que le contexte OpenGL associé est actif, vous pouvez alors enregistrer des échantillons de temps avec cet objet.

bool QOpenGLTimeMonitor::isResultAvailable() const

Renvoie « true » si les résultats de la requête de temporisation OpenGL sont disponibles.

Voir également waitForSamples() et waitForIntervals().

QList<GLuint> QOpenGLTimeMonitor::objectIds() const

Renvoie un ` QList ` contenant les identifiants des objets de requête de minuterie OpenGL.

int QOpenGLTimeMonitor::recordSample()

Lance une requête de chronométrage OpenGL à cet endroit précis de la file d'attente des commandes OpenGL. En appelant cette fonction de manière séquentielle au sein de la fonction de rendu de votre application, vous obtiendrez des informations détaillées sur le temps nécessaire au GPU pour exécuter les commandes OpenGL entre deux appels successifs à cette fonction.

Voir également setSampleCount(), isResultAvailable(), waitForSamples() et waitForIntervals().

void QOpenGLTimeMonitor::reset()

Réinitialise le moniteur de temps afin qu'il soit prêt à être utilisé dans une autre image de rendu. Appelez cette fonction une fois que vous avez obtenu les résultats précédents et avant d'appeler recordSample() pour la première fois sur l'image suivante.

Voir également recordSample().

int QOpenGLTimeMonitor::sampleCount() const

Renvoie le nombre de points d'échantillonnage demandés via la fonction ` setSampleCount()`. Si la fonction `create` a été appelée avec succès après l'appel de ` setSampleCount()`, la valeur renvoyée correspondra au nombre réel de points d'échantillonnage pouvant être utilisés.

La valeur par défaut du nombre d'échantillons est 2, ce qui correspond à la mesure d'un seul intervalle.

Voir également la fonction ` setSampleCount()`.

void QOpenGLTimeMonitor::setSampleCount(int sampleCount)

Définit le nombre de points d'échantillonnage sur sampleCount. Après avoir défini le nombre d'échantillons à l'aide de cette fonction, vous devez appeler create() pour instancier les objets de requête de temporisateur OpenGL sous-jacents.

La nouvelle valeur de ` sampleCount ` doit être au moins égale à 2.

Voir également sampleCount(), create() et recordSample().

QList<GLuint64> QOpenGLTimeMonitor::waitForIntervals() const

Renvoie un vecteur de type ` QList ` contenant les intervalles de temps délimités par les appels à la fonction ` recordSample()`. Le vecteur obtenu contiendra un élément de moins, car il représente les intervalles intermédiaires et non les échantillons d'horodatage réels.

Cette fonction se met en attente jusqu’à ce qu’OpenGL indique que les résultats sont disponibles. Il est recommandé de vérifier la disponibilité du résultat avant d’appeler cette fonction avec ` isResultAvailable()`.

Voir également waitForSamples() et isResultAvailable().

QList<GLuint64> QOpenGLTimeMonitor::waitForSamples() const

Renvoie un objet ` QList ` contenant les horodatages du GPU enregistrés à l'aide de la fonction ` recordSample()`.

Cette fonction reste bloquée jusqu’à ce qu’OpenGL indique que les résultats sont disponibles. Il est recommandé de vérifier la disponibilité du résultat avant d’appeler cette fonction avec ` isResultAvailable()`.

Remarque : cette fonction ne fonctionne que sur les systèmes disposant d'OpenGL >= 3.3 ou de l'extension ARB_timer_query. Voir QOpenGLTimerQuery pour plus de détails.

Voir également ` waitForIntervals()` et ` isResultAvailable()`.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.