QtBase  v6.3.1
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
QRhiTextureRenderTarget Class Referenceabstract

#include <qrhi_p.h>

Inheritance diagram for QRhiTextureRenderTarget:
Inheritance graph
[legend]
Collaboration diagram for QRhiTextureRenderTarget:
Collaboration graph
[legend]

Public Types

enum  Flag { PreserveColorContents = 1 << 0 , PreserveDepthStencilContents = 1 << 1 }
 
- Public Types inherited from QRhiResource
enum  Type {
  Buffer , Texture , Sampler , RenderBuffer ,
  RenderPassDescriptor , RenderTarget , TextureRenderTarget , ShaderResourceBindings ,
  GraphicsPipeline , SwapChain , ComputePipeline , CommandBuffer
}
 

Public Member Functions

QRhiResource::Type resourceType () const override
 
QRhiTextureRenderTargetDescription description () const
 
void setDescription (const QRhiTextureRenderTargetDescription &desc)
 
Flags flags () const
 
void setFlags (Flags f)
 
virtual QRhiRenderPassDescriptornewCompatibleRenderPassDescriptor ()=0
 
virtual bool create ()=0
 
- Public Member Functions inherited from QRhiRenderTarget
virtual QSize pixelSize () const =0
 
virtual float devicePixelRatio () const =0
 
virtual int sampleCount () const =0
 
QRhiRenderPassDescriptorrenderPassDescriptor () const
 
void setRenderPassDescriptor (QRhiRenderPassDescriptor *desc)
 
- Public Member Functions inherited from QRhiResource
virtual ~QRhiResource ()
 
virtual void destroy ()=0
 
void deleteLater ()
 
QByteArray name () const
 
void setName (const QByteArray &name)
 
quint64 globalResourceId () const
 

Protected Member Functions

 QRhiTextureRenderTarget (QRhiImplementation *rhi, const QRhiTextureRenderTargetDescription &desc_, Flags flags_)
 
- Protected Member Functions inherited from QRhiRenderTarget
 QRhiRenderTarget (QRhiImplementation *rhi)
 
- Protected Member Functions inherited from QRhiResource
 QRhiResource (QRhiImplementation *rhi)
 

Protected Attributes

QRhiTextureRenderTargetDescription m_desc
 
Flags m_flags
 
- Protected Attributes inherited from QRhiRenderTarget
QRhiRenderPassDescriptorm_renderPassDesc = nullptr
 
- Protected Attributes inherited from QRhiResource
QRhiImplementationm_rhi = nullptr
 
quint64 m_id
 
QByteArray m_objectName
 

Detailed Description

Definition at line 1018 of file qrhi_p.h.

Member Enumeration Documentation

◆ Flag

\class QRhiTextureRenderTarget
\internal
\inmodule QtGui
\brief Texture render target resource.

A texture render target allows rendering into one or more textures,
optionally with a depth texture or depth/stencil renderbuffer.

\note Textures used in combination with QRhiTextureRenderTarget must be
created with the QRhiTexture::RenderTarget flag.

The simplest example of creating a render target with a texture as its
single color attachment:

\badcode
    texture = rhi->newTexture(QRhiTexture::RGBA8, size, 1, QRhiTexture::RenderTarget);
    texture->create();
    rt = rhi->newTextureRenderTarget({ texture });
    rp = rt->newCompatibleRenderPassDescriptor();
    rt->setRenderPassDescriptor(rt);
    rt->create();

rt can now be used with beginPass()

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).

\value 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.

\value 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 (QRhiTextureRenderTargetDescription::depthTexture() is set) because depth/stencil renderbuffers may not have any physical backing and data may not be written out in the first place.

Enumerator
PreserveColorContents 
PreserveDepthStencilContents 

Definition at line 1021 of file qrhi_p.h.

Constructor & Destructor Documentation

◆ QRhiTextureRenderTarget()

QRhiTextureRenderTarget::QRhiTextureRenderTarget ( QRhiImplementation rhi,
const QRhiTextureRenderTargetDescription desc_,
Flags  flags_ 
)
protected

Definition at line 2965 of file qrhi.cpp.

Member Function Documentation

◆ create()

bool QRhiTextureRenderTarget::create ( )
pure virtual

Creates the corresponding native graphics resources. If there are already resources present due to an earlier create() with no corresponding destroy(), then destroy() is called implicitly first.

Note
renderPassDescriptor() must be set before calling create(). To obtain a QRhiRenderPassDescriptor compatible with the render target, call newCompatibleRenderPassDescriptor() before create() but after setting all other parameters, such as description() and flags(). To save resources, reuse the same QRhiRenderPassDescriptor with multiple QRhiTextureRenderTarget instances, 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.
resources, such as QRhiTexture instances, referenced in description() must already have create() called on them.
Returns
true when successful, false when a graphics operation failed. Regardless of the return value, calling destroy() is always safe.

Implemented in QVkTextureRenderTarget, QNullTextureRenderTarget, QMetalTextureRenderTarget, QGles2TextureRenderTarget, and QD3D11TextureRenderTarget.

Here is the caller graph for this function:

◆ description()

QRhiTextureRenderTargetDescription QRhiTextureRenderTarget::description ( ) const
inline

Definition at line 1029 of file qrhi_p.h.

Here is the caller graph for this function:

◆ flags()

Flags QRhiTextureRenderTarget::flags ( ) const
inline

Definition at line 1032 of file qrhi_p.h.

◆ newCompatibleRenderPassDescriptor()

QRhiRenderPassDescriptor * QRhiTextureRenderTarget::newCompatibleRenderPassDescriptor ( )
pure virtual
Returns
a new QRhiRenderPassDescriptor that is compatible with this render target.

The returned value is used in two ways: it can be passed to setRenderPassDescriptor() and QRhiGraphicsPipeline::setRenderPassDescriptor(). A render pass descriptor describes the attachments (color, depth/stencil) and the load/store behavior that can be affected by flags(). A QRhiGraphicsPipeline can only be used in combination with a render target that has the same QRhiRenderPassDescriptor set.

Two QRhiTextureRenderTarget instances can share the same render pass descriptor as long as they have the same number and type of attachments. The associated QRhiTexture or QRhiRenderBuffer instances are not part of the render pass descriptor so those can differ in the two QRhiTextureRenderTarget instances.

Note
resources, such as QRhiTexture instances, referenced in description() must already have create() called on them.
See also
create()

Implemented in QVkTextureRenderTarget, QNullTextureRenderTarget, QMetalTextureRenderTarget, QGles2TextureRenderTarget, and QD3D11TextureRenderTarget.

Here is the caller graph for this function:

◆ resourceType()

QRhiResource::Type QRhiTextureRenderTarget::resourceType ( ) const
overridevirtual
Returns
the resource type.

Reimplemented from QRhiRenderTarget.

Definition at line 2977 of file qrhi.cpp.

Here is the caller graph for this function:

◆ setDescription()

void QRhiTextureRenderTarget::setDescription ( const QRhiTextureRenderTargetDescription desc)
inline

Definition at line 1030 of file qrhi_p.h.

◆ setFlags()

void QRhiTextureRenderTarget::setFlags ( Flags  f)
inline

Definition at line 1033 of file qrhi_p.h.

Member Data Documentation

◆ m_desc

QRhiTextureRenderTargetDescription QRhiTextureRenderTarget::m_desc
protected

Definition at line 1041 of file qrhi_p.h.

◆ m_flags

Flags QRhiTextureRenderTarget::m_flags
protected

Definition at line 1042 of file qrhi_p.h.


The documentation for this class was generated from the following files: