- class Renderer#
摘要#
方法#
def
__init__()
def
update()
虚拟方法#
def
render()
def
synchronize()
注意
此文档可能包含从C++自动转换为Python的代码片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译有误,您也可以通过在https:/bugreports.qt.io/projects/PYSIDE创建工单的方式来告知我们
详细说明#
Renderer
类用于实现QQuickFramebufferObject
的渲染逻辑。- __init__()#
构造一个新的渲染器。
此函数在场景图同步阶段、GUI线程被阻塞时调用。
当需要新的FBO时调用此函数。这发生在初始帧上。如果将
textureFollowsItemSize
设置为 true,则每次项目尺寸更改时也会再次调用。返回的FBO可以具有任何附加项。如果QOpenGLFramebufferObjectFormat指示FBO应该是多采样,渲染器的内部实现将分配第二个FBO,并将多采样的FBO绘制到显示纹理的FBO中。
注意
某些硬件在较小的FBO大小时存在问题。
size
考虑了这一点,因此在使用固定大小覆盖大小时要谨慎。64x64的最小尺寸应该始终有效。注意
size
考虑了设备像素比,这意味着它已经乘以了正确的比例因子。当将包含QQuickFramebufferObject
项的窗口移动到具有不同设置的屏幕时,FBO将自动重新创建,并且此函数将使用正确的大小被调用。- framebufferObject()#
- 返回类型:
返回当前正在渲染的帧缓冲区对象。
- invalidateFramebufferObject()#
在
synchronize()
期间调用此函数以使当前FBO无效。这将导致新的FBO通过createFramebufferObject()
创建。- abstract render()#
当需要将FBO渲染到时调用此函数。在此点绑定帧缓冲区,并将
glViewport
设置为匹配FBO大小。此函数返回后将自动解除FBO的绑定。
注意
不要假设当此函数被调用时,OpenGL状态都是默认设置,或者它在调用之间得到保持。Qt Quick渲染器和自定义渲染代码都使用了同一个OpenGL上下文。这意味着在调用此函数之前,Quick可能会修改状态。
注意
建议在返回前调用
resetOpenGLState()
。这将重置Qt Quick渲染器使用的OpenGL状态,从而避免此函数中渲染代码状态变化的影响。- synchronize(arg__1)#
- 参数:
arg__1 –
QQuickFramebufferObject
此函数是
update()
调用的结果。使用此函数更新渲染器以在项中发生的更改。其中
item
是创建此渲染器的项。该函数在创建FBO之前被调用一次。例如,如果项具有由QML控制的颜色属性,则应调用
update()
并使用synchronize()将新颜色复制到渲染器中,以便在下一次渲染帧时使用。该函数是渲染器和项目之间读写彼此成员唯一安全的地方。
- update()#
当FBO应该再次渲染时调用此函数。
可以通过从
render()
中调用此函数来强制在下一帧之前再次渲染FBO。注意
应在渲染器内部使用此函数。要更新GUI线程上的项目,请使用
update()
。