PySide6.QtOpenGL.QOpenGLTimeMonitor

class QOpenGLTimeMonitor

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

PySide6.QtOpenGL.QOpenGLTimeMonitor 的继承图

概要

方法

注意

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

详细描述

QOpenGLTimeMonitor 类是一个方便的封装,用于管理一组 OpenGL 计时查询对象,这些对象用于在 GPU 上测量时间间隔,以满足渲染应用程序所需的粒度级别。

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

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

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

使用recordSample()函数来分隔包含您希望计时的OpenGL命令的代码块。您可以使用isResultAvailable()检查生成的时间样本和时间间隔的可用性。计算出的时间间隔和原始时间戳样本可以分别通过阻塞的waitForIntervals()waitForSamples()函数获取。

在检索结果并开始新一轮采样之前(例如,在下一帧中),请务必调用reset()函数,该函数将清除缓存的结果并将计时器索引重置回第一个计时器对象。

另请参阅

QOpenGLTimerQuery

__init__([parent=None])
Parameters:

父对象QObject

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

另请参阅

setSampleCount() create()

create()
Return type:

布尔

实例化 sampleCount() OpenGL 计时查询对象,这些对象将用于跟踪在连续调用 recordSample() 之间执行 OpenGL 命令所花费的时间。

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

destroy()

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

另请参阅

create()

isCreated()
Return type:

布尔

如果底层的OpenGL查询对象已经创建,则返回true。如果返回true并且关联的OpenGL上下文是当前的,那么你可以使用此对象记录时间样本。

isResultAvailable()
Return type:

布尔

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

objectIds()
Return type:

无符号整数列表

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

recordSample()
Return type:

整数

在OpenGL命令队列的这一点发出一个OpenGL计时器查询。在应用程序的渲染函数中按顺序调用此函数,将构建出在连续调用此函数之间执行OpenGL命令所花费的GPU时间的详细信息。

reset()

重置时间监视器,准备用于另一个渲染帧。在获取先前结果后,并在下一帧首次调用recordSample()之前调用此方法。

另请参阅

recordSample()

sampleCount()
Return type:

整数

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

样本计数的默认值为2,导致测量单个间隔。

另请参阅

setSampleCount()

setSampleCount(sampleCount)
Parameters:

sampleCount – int

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

新的 sampleCount 必须至少为 2。

waitForIntervals()
Return type:

.uint64_t 列表

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

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

waitForSamples()
Return type:

.uint64_t 列表

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

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

注意

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