PySide6.QtQuick.QQuickRenderTarget

class QQuickRenderTarget

QQuickRenderTarget 类提供了一个不透明的容器,用于指定渲染目标的本地图形资源及其相关元数据。更多

概要

方法

静态函数

注意

本文档可能包含从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()时不为空。

另请参阅

setDepthTexture()

devicePixelRatio()
Return type:

浮点数

返回渲染目标的设备像素比率。这是设备像素设备独立像素之间的比率。

默认设备像素比为1.0。

另请参阅

setDevicePixelRatio()

static fromOpenGLRenderBuffer(renderbufferId, pixelSize[, sampleCount=1])
Parameters:
  • renderbufferId – int

  • pixelSizeQSize

  • sampleCount – int

Return type:

QQuickRenderTarget

返回一个新的QQuickRenderTarget,引用由renderbufferId指定的OpenGL渲染缓冲区对象。

渲染缓冲区将用作内部帧缓冲区对象的颜色附件。提供此函数是为了允许目标渲染缓冲区,这些渲染缓冲区由应用程序创建,并带有一些外部缓冲区,例如EGLImageKHR。一旦应用程序调用了glEGLImageTargetRenderbufferStorageOES,渲染缓冲区就可以传递给此函数。

pixelSize 指定图像的大小,以像素为单位。

sampleCount 指定样本的数量。0 或 1 表示没有多重采样,而像 4 或 8 这样的值表示本地对象是一个多重采样渲染缓冲区。

注意

生成的 QQuickRenderTarget 不拥有任何本地资源,它仅包含引用以及大小和样本计数的相关元数据。调用者有责任确保本地资源在必要时存在。

static fromOpenGLTexture(textureId, pixelSize[, sampleCount=1])
Parameters:
  • textureId – int

  • pixelSizeQSize

  • sampleCount – int

Return type:

QQuickRenderTarget

这是一个重载函数。

返回一个新的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

  • pixelSizeQSize

  • sampleCount – int

Return type:

QQuickRenderTarget

返回一个新的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:
  • textureId – int

  • format – int

  • pixelSizeQSize

  • sampleCount – int

  • arraySize – int

  • flagsFlag 的组合

Return type:

QQuickRenderTarget

这是一个重载函数。

返回一个新的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

返回一个新的QQuickRenderTarget,引用由device指定的绘图设备对象。

此选项将渲染重定向到QPaintDevice仅在运行Qt Quick的software后端时可用。

注意

QQuickRenderTarget 不拥有 device 的所有权,调用者有责任确保该对象在必要时存在。

static fromRhiRenderTarget(renderTarget)
Parameters:

renderTargetQRhiRenderTarget

Return type:

QQuickRenderTarget

返回一个新的QQuickRenderTarget,引用现有的renderTarget

renderTarget 在大多数情况下将是一个 QRhiTextureRenderTarget,它允许将 Qt Quick 场景的渲染定向到 QRhiTexture 中。

注意

生成的 QQuickRenderTarget 并不拥有 renderTarget 和任何底层原生资源,它仅包含引用以及大小和样本计数的相关元数据。调用者有责任确保引用的资源在必要时存在。

isNull()
Return type:

布尔

如果此QQuickRenderTarget是默认构造的,不引用任何本地对象,则返回true。

mirrorVertically()
Return type:

布尔

返回 返回渲染目标是否垂直镜像。

默认值为false

另请参阅

setMirrorVertically()

__ne__(rhs)
Parameters:

rhsQQuickRenderTarget

Return type:

布尔

如果ab引用的是不同的原生对象集合,或者相关的数据(大小、样本数量)不匹配,则返回true。

__eq__(rhs)
Parameters:

rhsQQuickRenderTarget

Return type:

布尔

如果ab引用同一组原生对象并且具有匹配的关联数据(大小,样本计数),则返回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之前不可用。

另请参阅

depthTexture()

setDevicePixelRatio(ratio)
Parameters:

ratio – 浮点数

设置此渲染目标的设备像素比为ratio。这是设备像素设备独立像素之间的比率。

请注意,如果重新实现了renderWindow()以返回有效的QWindow,则指定的设备像素比率值将被忽略。

另请参阅

devicePixelRatio()

setMirrorVertically(enable)
Parameters:

enable – 布尔值

设置渲染目标内容的大小应垂直镜像到enable时绘制。这使得可以轻松集成不符合标准期望的第三方渲染代码。

注意

在使用software后端时,不应使用此函数。

另请参阅

mirrorVertically()