PySide6.QtOpenGL.QOpenGLTimeMonitor¶
- 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
之前,你应该通过调用setSamples()来设置你希望记录的样本点的数量。请注意,测量N个样本点将产生N-1个时间间隔。一旦你设置了样本点的数量,使用有效的当前OpenGL上下文调用create()
函数来创建必要的查询计时器对象。这些步骤通常在初始化函数中只执行一次。使用
recordSample()
函数来分隔包含您希望计时的OpenGL命令的代码块。您可以使用isResultAvailable()
检查生成的时间样本和时间间隔的可用性。计算出的时间间隔和原始时间戳样本可以分别通过阻塞的waitForIntervals()
和waitForSamples()
函数获取。在检索结果并开始新一轮采样之前(例如,在下一帧中),请务必调用
reset()
函数,该函数将清除缓存的结果并将计时器索引重置回第一个计时器对象。另请参阅
创建一个带有给定
parent
的QOpenGLTimeMonitor
实例。在使用之前,您必须使用有效的OpenGL上下文调用create()
。另请参阅
- create()¶
- Return type:
布尔
实例化
sampleCount()
OpenGL 计时查询对象,这些对象将用于跟踪在连续调用recordSample()
之间执行 OpenGL 命令所花费的时间。如果OpenGL计时器查询对象可以创建,则返回
true
。- destroy()¶
销毁此实例中使用的任何OpenGL计时器查询对象。
另请参阅
- 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()
之前调用此方法。另请参阅
- sampleCount()¶
- Return type:
整数
返回通过
setSampleCount()
请求的样本点数量。如果在setSampleCount()
之后成功调用了create,则返回的值将是实际可用的样本点数量。样本计数的默认值为2,导致测量单个间隔。
另请参阅
- 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
。