PySide6.QtQuick.QQuickRenderTarget¶
- class QQuickRenderTarget¶
QQuickRenderTarget类提供了一个不透明的容器,用于指定渲染目标的本地图形资源及其相关元数据。更多…概要¶
方法¶
def
__init__()def
depthTexture()def
isNull()def
__ne__()def
__eq__()
静态函数¶
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
- class Flag¶
(继承自
enum.Flag) 用于静态QQuickRenderTarget构造函数函数的标志。常量
描述
QQuickRenderTarget.Flag.MultisampleResolve
表示
sampleCount参数不是提供的纹理的样本数(并且纹理仍然是非多重采样纹理),而是用于多重采样抗锯齿的所需样本。触发自动创建和管理一个中间多重采样纹理(或纹理数组)作为颜色缓冲区,对应用程序透明。样本在渲染过程结束时自动解析到提供的纹理中。当未设置此标志,并且sampleCount参数大于1时,意味着提供的纹理是多重采样的。如果sampleCount为1(表示不涉及多重采样),则此标志无效。在版本6.8中添加。
- __init__()¶
构造一个默认的
QQuickRenderTarget,它不引用任何本地对象。- __init__(other)
- Parameters:
其他 –
QQuickRenderTarget
- depthTexture()¶
- Return type:
QRhiTexture
返回当前设置的深度纹理,在大多数情况下,
None。该值仅在调用
setDepthTexture()时不为空。另请参阅
- devicePixelRatio()¶
- Return type:
浮点数
返回渲染目标的设备像素比率。这是设备像素与设备独立像素之间的比率。
默认设备像素比为1.0。
- static fromOpenGLRenderBuffer(renderbufferId, pixelSize[, sampleCount=1])¶
- Parameters:
renderbufferId – int
pixelSize –
QSizesampleCount – int
- Return type:
返回一个新的
QQuickRenderTarget,引用由renderbufferId指定的OpenGL渲染缓冲区对象。渲染缓冲区将用作内部帧缓冲区对象的颜色附件。提供此函数是为了允许目标渲染缓冲区,这些渲染缓冲区由应用程序创建,并带有一些外部缓冲区,例如EGLImageKHR。一旦应用程序调用了glEGLImageTargetRenderbufferStorageOES,渲染缓冲区就可以传递给此函数。
pixelSize指定图像的大小,以像素为单位。sampleCount指定样本的数量。0 或 1 表示没有多重采样,而像 4 或 8 这样的值表示本地对象是一个多重采样渲染缓冲区。注意
生成的
QQuickRenderTarget不拥有任何本地资源,它仅包含引用以及大小和样本计数的相关元数据。调用者有责任确保本地资源在必要时存在。- static fromOpenGLTexture(textureId, pixelSize[, sampleCount=1])¶
- Parameters:
textureId – int
pixelSize –
QSizesampleCount – int
- Return type:
这是一个重载函数。
返回一个新的
QQuickRenderTarget,引用由textureId指定的OpenGL纹理对象。假设纹理的格式为GL_RGBA(GL_RGBA8)。pixelSize指定图像的大小,以像素为单位。目前仅支持2D纹理。sampleCount指定样本数量。0 或 1 表示没有多重采样,而像 4 或 8 这样的值表示本地对象是一个多重采样纹理。纹理被用作Qt Quick场景图使用的渲染目标的第一个颜色附件。如果适用,深度-模板缓冲区将被自动创建和使用。
OpenGL对象名称
textureId必须是Qt Quick场景图使用的渲染上下文中的有效名称。注意
生成的
QQuickRenderTarget不拥有任何本地资源,它仅包含引用以及大小和样本计数的相关元数据。调用者有责任确保本地资源在必要时存在。- static fromOpenGLTexture(textureId, format, pixelSize[, sampleCount=1])
- Parameters:
textureId – int
format – int
pixelSize –
QSizesampleCount – int
- Return type:
返回一个新的
QQuickRenderTarget,引用由textureId指定的OpenGL纹理对象。format指定纹理的本地内部格式。应仅使用Qt渲染基础设施支持的纹理格式。pixelSize指定图像的大小,以像素为单位。目前仅支持2D纹理。sampleCount指定样本数量。0 或 1 表示没有多重采样,而像 4 或 8 这样的值表示原生对象是一个多重采样纹理。纹理被用作Qt Quick场景图使用的渲染目标的第一个颜色附件。如果适用,深度-模板缓冲区将被自动创建并使用。
OpenGL对象名称
textureId必须是Qt Quick场景图使用的渲染上下文中的有效名称。注意
生成的
QQuickRenderTarget不拥有任何本地资源,它仅包含引用以及大小和样本计数的相关元数据。调用者有责任确保本地资源在必要时存在。- static fromOpenGLTexture(textureId, format, pixelSize, sampleCount, arraySize, flags)
- Parameters:
- Return type:
这是一个重载函数。
返回一个新的
QQuickRenderTarget,引用由textureId指定的OpenGL 2D纹理或纹理数组对象。format指定纹理的本地内部格式。应仅使用Qt渲染基础设施支持的纹理格式。pixelSize指定图像的大小,以像素为单位。目前仅支持2D纹理和2D纹理数组。sampleCount指定样本数量。0 或 1 表示没有多重采样,而像 4 或 8 这样的值表示原生对象是一个多重采样纹理,除非flags包含MultisampleResolve。在这种情况下,textureId被假定为非多重采样的 2D 纹理或 2D 纹理数组,而sampleCount定义了所需的样本数量。生成的QQuickRenderTarget将使用一个自动创建的多重采样纹理(或纹理数组)作为其颜色附件,并将样本解析到textureId中。这是在原生 OpenGL 纹理尚未多重采样时执行 MSAA 的推荐方法。当
arraySize大于 1 时,意味着多视图渲染(GL_OVR_multiview,QRhiColorAttachment::setMultiViewCount()),这在 VR/AR 中尤其相关。在这种情况下,arraySize是视图的数量,通常为2。有关在 Qt Quick 场景图中启用多视图渲染的详细信息,请参阅viewCount()。如果适用,深度-模板缓冲区将被自动创建和使用。当颜色缓冲区是多采样时,深度-模板缓冲区也会自动变为多采样。对于多视图渲染,深度-模板纹理将自动变为具有匹配
arraySize的数组。OpenGL对象名称
textureId必须是Qt Quick场景图使用的渲染上下文中的有效2D纹理名称。当arraySize大于1时,textureId必须是有效的2D纹理数组名称。注意
生成的
QQuickRenderTarget不拥有任何本地资源,它仅包含引用以及大小和样本计数的相关元数据。调用者有责任确保本地资源在必要时存在。注意
此重载的实现与OpenGL ES 2.0或3.0不兼容,至少需要OpenGL ES 3.1。(或在桌面上需要OpenGL 3.0)
- static fromPaintDevice(device)¶
- Parameters:
设备 –
QPaintDevice- Return type:
返回一个新的
QQuickRenderTarget,引用由device指定的绘图设备对象。此选项将渲染重定向到QPaintDevice仅在运行Qt Quick的
software后端时可用。- static fromRhiRenderTarget(renderTarget)¶
- Parameters:
renderTarget –
QRhiRenderTarget- Return type:
返回一个新的
QQuickRenderTarget,引用现有的renderTarget。renderTarget在大多数情况下将是一个 QRhiTextureRenderTarget,它允许将 Qt Quick 场景的渲染定向到 QRhiTexture 中。注意
生成的
QQuickRenderTarget并不拥有renderTarget和任何底层原生资源,它仅包含引用以及大小和样本计数的相关元数据。调用者有责任确保引用的资源在必要时存在。- isNull()¶
- Return type:
布尔
如果此
QQuickRenderTarget是默认构造的,不引用任何本地对象,则返回true。- mirrorVertically()¶
- Return type:
布尔
返回 返回渲染目标是否垂直镜像。
默认值为
false。- __ne__(rhs)¶
- Parameters:
rhs –
QQuickRenderTarget- Return type:
布尔
如果
a和b引用的是不同的原生对象集合,或者相关的数据(大小、样本数量)不匹配,则返回true。- __eq__(rhs)¶
- Parameters:
rhs –
QQuickRenderTarget- Return type:
布尔
如果
a和b引用同一组原生对象并且具有匹配的关联数据(大小,样本计数),则返回true。- setDepthTexture(texture)¶
- Parameters:
纹理 –
QRhiTexture
使用给定的
texture作为深度或深度-模板缓冲区的请求。不获取texture的所有权。只有在相关的情况下才会考虑该请求。例如,调用此函数对
fromRhiRenderTarget()、fromPaintDevice()或fromOpenGLRenderBuffer()没有影响。通常情况下,深度-模板缓冲区会自动创建,对
QQuickRenderTarget的用户是透明的。因此,在大多数情况下,使用QQuickRenderTarget时不需要调用此函数。然而,在特殊情况下,能够提供一个纹理来渲染深度(或深度和模板)数据,而不是让Qt Quick创建自己的中间纹理或缓冲区,可能会变得至关重要。一个例子是OpenXR及其扩展,如XR_KHR_composition_layer_depth。为了将深度缓冲区“提交”给XR合成器,实际上必须从OpenXR(从XrSwapchain)检索已经创建的深度(深度-模板)纹理,并将该纹理用作深度数据的渲染目标。如果没有这个函数,这是不可能的。注意
texture通常期望是一个非多重采样的2D纹理或纹理数组(用于多视图)。如果涉及MSAA,无论是否设置了MultisampleResolve标志,样本都会在渲染过程结束时解析为texture。MSAA仅在底层3D API支持时对深度(深度-模板)纹理支持,并且这种支持并不普遍可用。详情请参阅相关的QRhi功能标志。当不支持且与自定义深度纹理结合请求多重采样时,texture在渲染过程中不会被触及,并且会打印警告。注意
当涉及到OpenGL和OpenGL ES时,使用深度纹理在OpenGL ES 2.0上不可用,至少需要OpenGL ES 3.0。多采样(MSAA)支持在至少OpenGL ES 3.1或桌面上的OpenGL 3.0之前不可用。
另请参阅
- setDevicePixelRatio(ratio)¶
- Parameters:
ratio – 浮点数
设置此渲染目标的设备像素比为
ratio。这是设备像素与设备独立像素之间的比率。请注意,如果重新实现了
renderWindow()以返回有效的QWindow,则指定的设备像素比率值将被忽略。另请参阅
- setMirrorVertically(enable)¶
- Parameters:
enable – 布尔值
设置渲染目标内容的大小应垂直镜像到
enable时绘制。这使得可以轻松集成不符合标准期望的第三方渲染代码。