PySide6.QtGui.QRhiTextureRenderTarget¶
- class QRhiTextureRenderTarget¶
Texture render target resource.
Details
A texture render target allows rendering into one or more textures, optionally with a depth texture or depth/stencil renderbuffer.
For multisample rendering the common approach is to use a renderbuffer as the color attachment and set the non-multisample destination texture as the
resolve texture. For more information, read the detailed description of theQRhiColorAttachmentclass.Note
Textures used in combination with
QRhiTextureRenderTargetmust be created with theRenderTargetflag.The simplest example of creating a render target with a texture as its single color attachment:
QRhiTexture *texture = rhi->newTexture(QRhiTexture::RGBA8, size, 1, QRhiTexture::RenderTarget); texture->create(); QRhiTextureRenderTarget *rt = rhi->newTextureRenderTarget({ texture }); rp = rt->newCompatibleRenderPassDescriptor(); rt->setRenderPassDescriptor(rp); rt->create(); // rt can now be used with beginPass()
Note
This is a RHI API with limited compatibility guarantees, see
QRhifor details.Added in version 6.6.
Synopsis¶
Methods¶
def
description()def
flags()def
setDescription()def
setFlags()
Virtual methods¶
Note
This documentation may contain snippets that were automatically translated from C++ to Python. We always welcome contributions to the snippet translation. If you see an issue with the translation, you can also let us know by creating a ticket on https:/bugreports.qt.io/projects/PYSIDE
- class Flag¶
(inherits
enum.Flag) Flag values describing the load/store behavior for the render target. The load/store behavior may be baked into native resources under the hood, depending on the backend, and therefore it needs to be known upfront and cannot be changed without rebuilding (and so releasing and creating new native resources).Constant
Description
QRhiTextureRenderTarget.Flag.PreserveColorContents
Indicates that the contents of the color attachments is to be loaded when starting a render pass, instead of clearing. This is potentially more expensive, especially on mobile (tiled) GPUs, but allows preserving the existing contents between passes. When doing multisample rendering with a resolve texture set, setting this flag also requests the multisample color data to be stored (written out) to the multisample texture or render buffer. (for non-multisample rendering the color data is always stored, but for MSAA storing the multisample data decreases efficiency for certain GPU architectures, hence defaulting to not writing it out) Note however that this is non-portable: in some cases there is no intermediate multisample texture on the graphics API level, e.g. when using OpenGL ES’s
GL_EXT_multisampled_render_to_textureas it is all implicit, handled by the OpenGL ES implementation. In that case, PreserveColorContents will likely have no effect. Therefore, avoid relying on this flag when using multisample rendering and the color attachment is using a multisampleQRhiTexture(notQRhiRenderBuffer).QRhiTextureRenderTarget.Flag.PreserveDepthStencilContents
Indicates that the contents of the depth texture is to be loaded when starting a render pass, instead clearing. Only applicable when a texture is used as the depth buffer (
depthTexture()is set) because depth/stencil renderbuffers may not have any physical backing and data may not be written out in the first place.QRhiTextureRenderTarget.Flag.DoNotStoreDepthStencilContents
Indicates that the contents of the depth texture does not need to be written out. Relevant only when a
QRhiTexture, notQRhiRenderBuffer, is used as the depth-stencil buffer, because forQRhiRenderBufferthis is implicit. When a depthResolveTexture is set, the flag is not relevant, because the behavior is then as if the flag was set. This enum value is introduced in Qt 6.8.
- PySide6.QtGui.QRhiTextureRenderTarget.m_desc¶
- PySide6.QtGui.QRhiTextureRenderTarget.m_flags¶
- abstract create()¶
- Return type:
bool
Creates the corresponding native graphics resources. If there are already resources present due to an earlier create() with no corresponding
destroy(), thendestroy()is called implicitly first.Note
renderPassDescriptor()must be set before calling create(). To obtain aQRhiRenderPassDescriptorcompatible with the render target, callnewCompatibleRenderPassDescriptor()before create() but after setting all other parameters, such asdescription()andflags(). To save resources, reuse the sameQRhiRenderPassDescriptorwith multipleQRhiTextureRenderTargetinstances, whenever possible. Sharing the same render pass descriptor is only possible when the render targets have the same number and type of attachments (the actual textures can differ) and the same flags.Note
resources, such as
QRhiTextureinstances, referenced indescription()must already have create() called on them.Returns
truewhen successful,falsewhen a graphics operation failed. Regardless of the return value, callingdestroy()is always safe.- description()¶
- Return type:
Returns the render target description.
See also
Returns the currently set flags.
See also
- abstract newCompatibleRenderPassDescriptor()¶
- Return type:
Returns a new
QRhiRenderPassDescriptorthat is compatible with this render target.The returned value is used in two ways: it can be passed to
setRenderPassDescriptor()andsetRenderPassDescriptor(). A render pass descriptor describes the attachments (color, depth/stencil) and the load/store behavior that can be affected byflags(). AQRhiGraphicsPipelinecan only be used in combination with a render target that has acompatibleQRhiRenderPassDescriptorset.Two
QRhiTextureRenderTargetinstances can share the same render pass descriptor as long as they have the same number and type of attachments. The associatedQRhiTextureorQRhiRenderBufferinstances are not part of the render pass descriptor so those can differ in the twoQRhiTextureRenderTargetinstances.Note
resources, such as
QRhiTextureinstances, referenced indescription()must already havecreate()called on them.See also
- setDescription(desc)¶
- Parameters:
Sets the render target description
desc.See also
Sets the flags to
f.See also