class QOpenGLTimeMonitor#

QOpenGLTimeMonitor 类封装了一个OpenGL计时查询对象的序列。更多

Inheritance diagram of PySide6.QtOpenGL.QOpenGLTimeMonitor

摘要#

方法#

备注

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译中的问题,您也可以通过在https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细说明#

QOpenGLTimeMonitor类对一组OpenGL计时器查询对象进行了便利包装,用于在GPU上测量您渲染应用程序所需粒度的时间间隔。

按顺序查询OpenGL计时器查询对象,记录您渲染代码中感兴趣位置上的GPU时间戳。一旦所有计时器查询的结果都变为可用,就可以检索结果,QOpenGLTimerMonitor将为您计算记录的时间间隔。

此类的典型用途是分析渲染算法的性能,或实时调整这些算法以平衡动态性能/质量。

在将QOpenGLTimeMonitor用于渲染函数之前,您应通过调用setSampleCount()设置要记录的所需样本点数量。请注意,测量N个样本点将产生N-1个时间间隔。一旦设置了样本点数量,请通过传递有效的当前OpenGL上下文调用create()函数以创建必要的查询计时器对象。这些步骤通常在初始化函数中仅执行一次。

使用recordSample()函数来标记包含OpenGL命令的代码块,以便进行计时。您可以使用isResultAvailable()来检查结果时间和时间间隔的可用性。计算出的时间间隔和原始时间戳样本可以通过阻塞函数waitForIntervals()waitForSamples()分别检索。

在检索结果并开始新一轮的数据采集之前(例如在下帧中)请确保调用reset()函数,这将清除缓存的結果并重置计时器索引为第一个计时器对象。

另请参阅

QOpenGLTimerQuery

__init__([parent=None])#
参数

parentQObject

创建具有给定parentQOpenGLTimeMonitor实例。在使用之前,您必须使用有效的OpenGL上下文调用create()

另请参阅

setSampleCount()create()

create()#
返回类型

bool

实例化将用于跟踪在连续调用recordSample()之间执行OpenGL命令所需时间的OpenGL计时器查询对象。

如果OpenGL计时器查询对象可以创建,则返回true

destroy()#

销毁实例中使用的任何OpenGL计时器查询对象。

另请参阅

create()

isCreated()#
返回类型

bool

如果底层OpenGL查询对象已创建,则返回 true。如果此函数返回 true 且相关OpenGL上下文处于当前状态,则可以使用此对象记录时间样本。

isResultAvailable()
返回类型

bool

如果OpenGL计时器查询结果可用,则返回 true

objectIds()
返回类型

无符号整数的列表

返回包含OpenGL计时器查询对象ID的QList。

recordSample()
返回类型

整数

在OpenGL命令队列的此点处发出OpenGL计时器查询。在应用程序的渲染函数中按顺序调用此函数,将逐步构建调用此函数之间执行的OpenGL命令所消耗的GPU时间的详细信息。

reset()recordSample() 进行下一次渲染的第一帧之前,请调用一次此函数。

另请参阅

recordSample()

sampleCount()#
返回类型

整数

返回使用 setSampleCount() 请求的样本点的数量。如果在调用 setSampleCount() 后成功调用 create(),则返回的值将是实际可以使用的样本点的数量。

样本点的默认值是 2,这会导致测量单个间隔。

另请参阅

setSampleCount()

setSampleCount(sampleCount)#
参数

sampleCount – int

将样本点数量设置为 sampleCount。使用此函数设置样本数量后,您必须调用 create() 以实例化底层的 OpenGL 计时查询对象。

新的 sampleCount 必须至少为 2。

waitForIntervals()#
返回类型

.uint64_t 列表

返回一个包含由调用 recordSample() 分隔的时间间隔的 QList 。结果向量将包含一个更少的元素,因为它表示间隔而不是实际的时间戳样本。

此函数将阻塞,直到 OpenGL 表明结果可用。建议在调用此函数之前使用 isResultAvailable() 检查结果的可用性。

waitForSamples()#
返回类型

.uint64_t 列表

返回一个包含使用 recordSample() 抓取的 GPU 时间戳的 QList .

此函数将阻塞,直到 OpenGL 表明结果可用。建议在调用此函数之前使用 isResultAvailable() 检查结果的可用性。

备注

此函数仅在具有OpenGL >= 3.3 或ARB_timer_query扩展的系统上工作。有关更多信息,请参阅 QOpenGLTimerQuery