QOpenGLTimeMonitor Class
La classe QOpenGLTimeMonitor englobe une séquence d'objets de requête de temporisation OpenGL. Plus d'informations...
| En-tête : | #include <QOpenGLTimeMonitor> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS OpenGL)target_link_libraries(mytarget PRIVATE Qt6::OpenGL) |
| qmake : | QT += opengl |
| Héritages : | QObject |
- Liste de tous les membres, y compris les membres hérités
- QOpenGLTimeMonitor fait partie de Rendering in 3D.
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 une enveloppe de commodité autour d'une collection d'objets de requête de minuterie OpenGL utilisés pour mesurer des intervalles de temps sur le GPU au niveau de granularité requis par votre application de rendu.
Les objets de requête de temporisation OpenGL sont interrogés en séquence pour enregistrer les horodatages du GPU aux positions d'intérêt dans votre code de rendu. Une fois que les résultats de toutes les requêtes sont disponibles, ils peuvent être récupérés et QOpenGLTimerMonitor calculera les intervalles de temps enregistrés pour vous.
Le cas d'utilisation typique de cette classe est de profiler les algorithmes de rendu de votre application ou d'ajuster ces algorithmes en temps réel pour un équilibrage dynamique des performances et de 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 setSamples(). Notez que la mesure de N points d'échantillonnage produira N-1 intervalles de temps. Une fois que vous avez défini le nombre de points d'échantillonnage, appelez la fonction create() avec un contexte OpenGL valide pour créer les objets de temporisation 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 que vous souhaitez chronométrer. Vous pouvez vérifier la disponibilité des échantillons de temps et des intervalles de temps résultants avec isResultAvailable(). Les intervalles de temps calculés et les échantillons d'horodatage bruts peuvent être récupérés avec les fonctions de blocage waitForIntervals() et waitForSamples() respectivement.
Après avoir récupéré les résultats et avant de commencer un nouveau cycle de prise d'échantillons (par exemple, dans la prochaine image), assurez-vous d'appeler la fonction reset() qui effacera les résultats mis en cache et réinitialisera l'index de la minuterie au premier objet de la minuterie.
Voir également QOpenGLTimerQuery.
Documentation des fonctions membres
[explicit] QOpenGLTimeMonitor::QOpenGLTimeMonitor(QObject *parent = nullptr)
Crée une instance de QOpenGLTimeMonitor avec l'adresse parent. Vous devez appeler create() avec un contexte OpenGL valide avant de l'utiliser.
Voir aussi setSampleCount() et create().
[virtual noexcept] QOpenGLTimeMonitor::~QOpenGLTimeMonitor()
Détruit le site QOpenGLTimeMonitor et toutes les ressources OpenGL sous-jacentes.
bool QOpenGLTimeMonitor::create()
Instancie sampleCount() les objets de requête de la minuterie OpenGL qui seront utilisés pour suivre le temps d'exécution des commandes OpenGL entre les appels successifs à recordSample().
Retourne true si les objets de requête de la minuterie OpenGL ont pu être créés.
Voir aussi destroy(), setSampleCount(), et recordSample().
void QOpenGLTimeMonitor::destroy()
Détruit tous les objets OpenGL timer query utilisés dans cette instance.
Voir aussi create().
bool QOpenGLTimeMonitor::isCreated() const
Renvoie true si les objets de requête OpenGL sous-jacents ont été créés. Si cette valeur 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
Retourne true si les résultats de la requête OpenGL timer sont disponibles.
Voir aussi waitForSamples() et waitForIntervals().
QList<GLuint> QOpenGLTimeMonitor::objectIds() const
Renvoie une adresse QList contenant les identifiants des objets de la requête de la minuterie OpenGL.
int QOpenGLTimeMonitor::recordSample()
Emet une requête de temporisation OpenGL à ce point de la file d'attente des commandes OpenGL. L'appel à cette fonction dans une séquence de la fonction de rendu de votre application, permettra d'obtenir des détails sur le temps d'exécution des commandes OpenGL par le GPU entre les appels successifs à cette fonction.
Voir aussi setSampleCount(), isResultAvailable(), waitForSamples(), et waitForIntervals().
void QOpenGLTimeMonitor::reset()
Réinitialise le moniteur de temps pour qu'il soit prêt à être utilisé dans une autre image de rendu. Appelez cette commande une fois que vous avez obtenu les résultats précédents et avant d'appeler recordSample() pour la première fois dans l'image suivante.
Voir également recordSample().
int QOpenGLTimeMonitor::sampleCount() const
Renvoie le nombre de points d'échantillonnage qui ont été demandés avec setSampleCount(). Si create a été appelé avec succès après setSampleCount(), la valeur renvoyée sera le nombre réel de points d'échantillonnage qui peuvent être utilisés.
La valeur par défaut du nombre d'échantillons est 2, ce qui conduit à la mesure d'un seul intervalle.
Voir également setSampleCount().
void QOpenGLTimeMonitor::setSampleCount(int sampleCount)
Définit le nombre de points d'échantillonnage à sampleCount. Après avoir défini le nombre d'échantillons avec cette fonction, vous devez appeler create() pour instancier les objets OpenGL timer query sous-jacents.
Le nouveau sampleCount doit être au moins égal à 2.
Voir aussi sampleCount(), create(), et recordSample().
QList<GLuint64> QOpenGLTimeMonitor::waitForIntervals() const
Renvoie un QList contenant les intervalles de temps délimités par les appels à recordSample(). Le vecteur résultant contiendra un élément de moins car il représente les intervalles intermédiaires plutôt que les échantillons d'horodatage réels.
Cette fonction se bloquera 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 aussi waitForSamples() et isResultAvailable().
QList<GLuint64> QOpenGLTimeMonitor::waitForSamples() const
Renvoie un QList contenant les horodatages du GPU pris avec recordSample().
Cette fonction se bloquera 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().
Note : Cette fonction ne fonctionne que sur les systèmes qui ont OpenGL >=3.3 ou l'extension ARB_timer_query. Voir QOpenGLTimerQuery pour plus de détails.
Voir aussi 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.