QOpenGLTimeMonitor Class
La clase QOpenGLTimeMonitor envuelve una secuencia de objetos de consulta de temporizador OpenGL. Más...
| Cabecera: | #include <QOpenGLTimeMonitor> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS OpenGL)target_link_libraries(mytarget PRIVATE Qt6::OpenGL) |
| qmake: | QT += opengl |
| Hereda: | QObject |
- Lista de todos los miembros, incluyendo los heredados
- QOpenGLTimeMonitor es parte de Renderizado en 3D.
Funciones Públicas
| 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 |
Descripción Detallada
La clase QOpenGLTimeMonitor es una práctica envoltura alrededor de una colección de objetos de consulta de temporizador OpenGL utilizados para medir intervalos de tiempo en la GPU al nivel de granularidad requerido por tu aplicación de renderizado.
Los objetos de consulta de temporizador OpenGL se consultan en secuencia para registrar las marcas de tiempo de la GPU en las posiciones de interés del código de renderizado. Una vez que los resultados de todas las consultas del temporizador estén disponibles, los resultados pueden ser obtenidos y QOpenGLTimerMonitor calculará los intervalos de tiempo registrados para ti.
El caso tipico de uso de esta clase es para perfilar los algoritmos de renderizado de tu aplicacion o para ajustar esos algoritmos en tiempo real para un balance dinamico de rendimiento/calidad.
Antes de usar QOpenGLTimeMonitor en tu funcion de renderizado deberias establecer el numero requerido de puntos de muestra que deseas grabar llamando a setSamples(). Tenga en cuenta que la medición de N puntos de muestra producirá N-1 intervalos de tiempo. Una vez que haya establecido el número de puntos de muestra, llame a la función create() con un contexto OpenGL actual válido para crear los objetos temporizadores de consulta necesarios. Estos pasos suelen realizarse una sola vez en una función de inicialización.
Utilice la función recordSample() para delimitar bloques de código que contengan comandos OpenGL que desee temporizar. Puede comprobar la disponibilidad de las muestras de tiempo e intervalos de tiempo resultantes con isResultAvailable(). Los intervalos de tiempo calculados y las muestras de tiempo sin procesar pueden recuperarse con las funciones de bloqueo waitForIntervals() y waitForSamples() respectivamente.
Tras recuperar los resultados y antes de iniciar una nueva ronda de toma de muestras (por ejemplo, en el siguiente fotograma), asegúrese de llamar a la función reset(), que borrará los resultados almacenados en caché y restablecerá el índice del temporizador al primer objeto temporizador.
Véase también QOpenGLTimerQuery.
Documentación de las funciones miembro
[explicit] QOpenGLTimeMonitor::QOpenGLTimeMonitor(QObject *parent = nullptr)
Crea una instancia de QOpenGLTimeMonitor con la dirección parent. Debes llamar a create() con un contexto OpenGL válido antes de usarlo.
Ver también setSampleCount() y create().
[virtual noexcept] QOpenGLTimeMonitor::~QOpenGLTimeMonitor()
Destruye la página QOpenGLTimeMonitor y cualquier recurso OpenGL subyacente.
bool QOpenGLTimeMonitor::create()
Instantiate sampleCount() Objetos de consulta de temporizador OpenGL que se utilizarán para realizar un seguimiento de la cantidad de tiempo que se tarda en ejecutar comandos OpenGL entre llamadas sucesivas a recordSample().
Devuelve true si se pudieron crear los objetos de consulta del temporizador OpenGL.
Ver también destroy(), setSampleCount(), y recordSample().
void QOpenGLTimeMonitor::destroy()
Destruye cualquier objeto de consulta de temporizador OpenGL utilizado en esta instancia.
Véase también create().
bool QOpenGLTimeMonitor::isCreated() const
Devuelve true si se han creado los objetos de consulta OpenGL subyacentes. Si devuelve true y el contexto OpenGL asociado es actual, podrá registrar muestras de tiempo con este objeto.
bool QOpenGLTimeMonitor::isResultAvailable() const
Devuelve true si los resultados de la consulta del temporizador OpenGL están disponibles.
Véase también waitForSamples() y waitForIntervals().
QList<GLuint> QOpenGLTimeMonitor::objectIds() const
Devuelve un QList que contiene los Ids de los objetos de consulta del temporizador OpenGL.
int QOpenGLTimeMonitor::recordSample()
Emite una consulta al temporizador OpenGL en este punto de la cola de comandos OpenGL. Llamando a esta función en una secuencia en la función de renderizado de tu aplicación, se acumularán detalles del tiempo de GPU que se tarda en ejecutar los comandos OpenGL entre las sucesivas llamadas a esta función.
Véase también setSampleCount(), isResultAvailable(), waitForSamples(), y waitForIntervals().
void QOpenGLTimeMonitor::reset()
Restablece el monitor de tiempo listo para su uso en otro fotograma de renderizado. Llame a esto una vez que haya obtenido los resultados anteriores y antes de llamar a recordSample() por primera vez en el siguiente fotograma.
Véase también recordSample().
int QOpenGLTimeMonitor::sampleCount() const
Devuelve el número de puntos de muestra que se han solicitado con setSampleCount(). Si se ha llamado con éxito a create después de setSampleCount(), el valor devuelto será el número real de puntos de muestra que se pueden utilizar.
El valor por defecto para el recuento de muestras es 2, lo que conduce a la medición de un único intervalo.
Véase también setSampleCount().
void QOpenGLTimeMonitor::setSampleCount(int sampleCount)
Establece el número de puntos de muestreo en sampleCount. Después de establecer el número de muestras con esta función, debes llamar a create() para instanciar los objetos de consulta de temporizador OpenGL subyacentes.
El nuevo sampleCount debe ser al menos 2.
Véase también sampleCount(), create(), y recordSample().
QList<GLuint64> QOpenGLTimeMonitor::waitForIntervals() const
Devuelve un QList que contiene los intervalos de tiempo delimitados por las llamadas a recordSample(). El vector resultante contendrá un elemento menos, ya que representa los intervalos intermedios en lugar de las muestras de marca de tiempo reales.
Esta función se bloqueará hasta que OpenGL indique que los resultados están disponibles. Se recomienda comprobar la disponibilidad del resultado antes de llamar a esta función con isResultAvailable().
Véase también waitForSamples() y isResultAvailable().
QList<GLuint64> QOpenGLTimeMonitor::waitForSamples() const
Devuelve un QList que contiene las marcas de tiempo de la GPU tomadas con recordSample().
Esta función se bloqueará hasta que OpenGL indique que los resultados están disponibles. Se recomienda comprobar la disponibilidad del resultado antes de llamar a esta función con isResultAvailable().
Nota: Esta función sólo funciona en sistemas que tengan OpenGL >=3.3 o la extensión ARB_timer_query. Véase QOpenGLTimerQuery para más detalles.
Véase también waitForIntervals() y 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.