class Renderer#

摘要#

方法#

虚拟方法#

注意

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

详细说明#

Renderer 类用于实现 QQuickFramebufferObject 的渲染逻辑。

__init__()#

构造一个新的渲染器。

此函数在场景图同步阶段、GUI线程被阻塞时调用。

createFramebufferObject(size)#
参数:

sizeQSize

返回类型:

QOpenGLFramebufferObject

当需要新的FBO时调用此函数。这发生在初始帧上。如果将 textureFollowsItemSize 设置为 true,则每次项目尺寸更改时也会再次调用。

返回的FBO可以具有任何附加项。如果QOpenGLFramebufferObjectFormat指示FBO应该是多采样,渲染器的内部实现将分配第二个FBO,并将多采样的FBO绘制到显示纹理的FBO中。

注意

某些硬件在较小的FBO大小时存在问题。size考虑了这一点,因此在使用固定大小覆盖大小时要谨慎。64x64的最小尺寸应该始终有效。

注意

size考虑了设备像素比,这意味着它已经乘以了正确的比例因子。当将包含QQuickFramebufferObject项的窗口移动到具有不同设置的屏幕时,FBO将自动重新创建,并且此函数将使用正确的大小被调用。

framebufferObject()#
返回类型:

QOpenGLFramebufferObject

返回当前正在渲染的帧缓冲区对象。

invalidateFramebufferObject()#

synchronize()期间调用此函数以使当前FBO无效。这将导致新的FBO通过createFramebufferObject()创建。

abstract render()#

当需要将FBO渲染到时调用此函数。在此点绑定帧缓冲区,并将glViewport设置为匹配FBO大小。

此函数返回后将自动解除FBO的绑定。

注意

不要假设当此函数被调用时,OpenGL状态都是默认设置,或者它在调用之间得到保持。Qt Quick渲染器和自定义渲染代码都使用了同一个OpenGL上下文。这意味着在调用此函数之前,Quick可能会修改状态。

注意

建议在返回前调用resetOpenGLState()。这将重置Qt Quick渲染器使用的OpenGL状态,从而避免此函数中渲染代码状态变化的影响。

synchronize(arg__1)#
参数:

arg__1QQuickFramebufferObject

此函数是update()调用的结果。

使用此函数更新渲染器以在项中发生的更改。其中item是创建此渲染器的项。该函数在创建FBO之前被调用一次。

例如,如果项具有由QML控制的颜色属性,则应调用 update() 并使用synchronize()将新颜色复制到渲染器中,以便在下一次渲染帧时使用。

该函数是渲染器和项目之间读写彼此成员唯一安全的地方。

update()#

当FBO应该再次渲染时调用此函数。

可以通过从 render() 中调用此函数来强制在下一帧之前再次渲染FBO。

注意

应在渲染器内部使用此函数。要更新GUI线程上的项目,请使用 update()