- class QOpenGLTimeMonitor#
QOpenGLTimeMonitor
类封装了一个OpenGL计时查询对象的序列。更多…摘要#
方法#
def
__init__()
def
create()
def
destroy()
def
isCreated()
def
objectIds()
def
recordSample()
def
reset()
def
sampleCount()
def
setSampleCount()
def
waitForSamples()
备注
本文档可能包含从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()
函数,这将清除缓存的結果并重置计时器索引为第一个计时器对象。另请参阅
创建具有给定
parent
的QOpenGLTimeMonitor
实例。在使用之前,您必须使用有效的OpenGL上下文调用create()
。另请参阅
- create()#
- 返回类型
bool
实例化将用于跟踪在连续调用
recordSample()
之间执行OpenGL命令所需时间的OpenGL计时器查询对象。如果OpenGL计时器查询对象可以创建,则返回
true
。- destroy()#
销毁实例中使用的任何OpenGL计时器查询对象。
另请参阅
- isCreated()#
- 返回类型
bool
如果底层OpenGL查询对象已创建,则返回
true
。如果此函数返回true
且相关OpenGL上下文处于当前状态,则可以使用此对象记录时间样本。-
isResultAvailable()
- 返回类型
bool
如果OpenGL计时器查询结果可用,则返回 true
-
objectIds()
- 返回类型
无符号整数的列表
返回包含OpenGL计时器查询对象ID的QList。
-
recordSample()
- 返回类型
整数
在OpenGL命令队列的此点处发出OpenGL计时器查询。在应用程序的渲染函数中按顺序调用此函数,将逐步构建调用此函数之间执行的OpenGL命令所消耗的GPU时间的详细信息。
-
reset()
recordSample()
进行下一次渲染的第一帧之前,请调用一次此函数。另请参阅
- sampleCount()#
- 返回类型
整数
- setSampleCount(sampleCount)#
- 参数
sampleCount – int
- waitForIntervals()#
- 返回类型
.uint64_t 列表
- waitForSamples()#
- 返回类型
.uint64_t 列表
返回使用 setSampleCount()
请求的样本点的数量。如果在调用 setSampleCount()
后成功调用 create(),则返回的值将是实际可以使用的样本点的数量。
样本点的默认值是 2,这会导致测量单个间隔。
另请参阅
将样本点数量设置为 sampleCount
。使用此函数设置样本数量后,您必须调用 create()
以实例化底层的 OpenGL 计时查询对象。
新的 sampleCount
必须至少为 2。
返回一个包含由调用 recordSample()
分隔的时间间隔的 QList 。结果向量将包含一个更少的元素,因为它表示间隔而不是实际的时间戳样本。
此函数将阻塞,直到 OpenGL 表明结果可用。建议在调用此函数之前使用 isResultAvailable()
检查结果的可用性。
返回一个包含使用 recordSample()
抓取的 GPU 时间戳的 QList .
此函数将阻塞,直到 OpenGL 表明结果可用。建议在调用此函数之前使用 isResultAvailable()
检查结果的可用性。
备注
此函数仅在具有OpenGL >= 3.3 或ARB_timer_query扩展的系统上工作。有关更多信息,请参阅 QOpenGLTimerQuery
。