QRhiTextureRenderTarget 类

纹理渲染目标资源。 更多...

头文件 #include <QRhiTextureRenderTarget>
CMakefind_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmakeQT += gui
自从Qt 6.6
继承 QRhiRenderTarget

公共类型

枚举Flag { PreserveColorContents, PreserveDepthStencilContents }
flagsFlags

公共函数

virtual boolcreate() = 0
QRhiTextureRenderTargetDescriptiondescription() const
QRhiTextureRenderTarget::Flagsflags() const
virtual QRhiRenderPassDescriptor *newCompatibleRenderPassDescriptor() = 0
voidsetDescription(const QRhiTextureRenderTargetDescription &desc)
voidsetFlags(QRhiTextureRenderTarget::Flags f)

重实现的公共函数

virtual QRhiResource::TyperesourceType() const override

详细描述

纹理渲染目标允许将内容渲染到一个或多个纹理中,可选地带有深度纹理或深度/模板渲染缓冲区。

对于多采样渲染,常见的方法是将渲染缓冲区用作颜色附件,并将非多采样的目标纹理设置为 解决纹理

注意:与 QRhiTextureRenderTarget 一起使用的纹理必须使用带有 QRhiTexture::RenderTarget 标志来创建。

创建具有单个纹理作为其颜色附件的渲染目标的简单示例

QRhiTexture *texture = rhi->newTexture(QRhiTexture::RGBA8, size, 1, QRhiTexture::RenderTarget);
texture->create();
QRhiTextureRenderTarget *rt = rhi->newTextureRenderTarget({ texture });
rp = rt->newCompatibleRenderPassDescriptor();
rt->setRenderPassDescriptor(rt);
rt->create();
// rt can now be used with beginPass()

注意:这是一个具有有限兼容性保证的 RHI API,有关详细信息,请参阅 QRhi

成员类型文档

enum QRhiTextureRenderTarget::Flag
flags QRhiTextureRenderTarget::Flags

描述渲染目标加载/存储行为的标志值。该加载/存储行为可能会在底层烘焙到原生资源中,具体取决于后端,因此需要提前知道,并且无法在不重新构建(因此释放和创建新的原生资源)的情况下更改。

常量描述
QRhiTextureRenderTarget::PreserveColorContents1 << 0指示在开始渲染传递时加载着色附件的内容,而不是清除。这在移动端(分块)GPU上可能更为昂贵,但允许在传递之间保持现有内容。
QRhiTextureRenderTarget::PreserveDepthStencilContents1 << 1指示在开始渲染传递时加载深度纹理的内容,而不是清除。仅适用于将纹理用作深度缓冲区时(QRhiTextureRenderTargetDescription::depthTexture() 被设置)因为深度/模板渲染缓冲区可能没有任何实际的底层支撑,数据可能一开始就不会写入。

Flags类型是QFlags<Flag>的类型定义。它存储了Flag值的或组合。

成员函数文档

[纯虚函数] bool QRhiTextureRenderTarget::create()

创建相应的本地图形资源。如果由于较早的create()而没有对应的destroy()存在,则因此在隐式调用destroy()。

注意:renderPassDescriptor()必须在调用create()之前设置。为了获得与渲染目标兼容的QRhiRenderPassDescriptor,请在设置所有其他参数(如description()和flags())之后但在create()之前调用newCompatibleRenderPassDescriptor()。为了节省资源,在可能的情况下,重复使用相同的QRhiRenderPassDescriptor来配合多个QRhiTextureRenderTarget实例。只有在渲染目标具有相同数量和类型的附件(实际的纹理可以不同)和相同的标志的情况下,才能共享相同的渲染传递描述符。

注意:description()中引用的资源,如QRhiTexture实例,必须已经调用了create()。

成功时返回true,失败时返回false。不管返回值如何,调用destroy()总是安全的。

QRhiTextureRenderTargetDescription QRhiTextureRenderTarget::description() const

返回渲染目标描述。

另请参阅:setDescription().

QRhiTextureRenderTarget::Flags QRhiTextureRenderTarget::flags() const

返回当前设置的标志。

另请参阅:setFlags().

[纯虚函数] QRhiRenderPassDescriptor *QRhiTextureRenderTarget::newCompatibleRenderPassDescriptor()

返回一个与该渲染目标兼容的新QRhiRenderPassDescriptor

返回值可以用两种方式:可以传递给setRenderPassDescriptor()和QRhiGraphicsPipeline::setRenderPassDescriptor()).渲染通道描述符定义了 attachment(颜色、深度/模板),以及受flags影响的负载/存储行为。只有与具有兼容compatible QRhiRenderPassDescriptor的渲染目标相结合时,QRhiGraphicsPipeline才能使用。

只要颜色和类型相同,两个QRhiTextureRenderTarget实例可以共享相同的渲染通道描述符。相关的QRhiTextureQRhiRenderBuffer实例不是渲染通道描述符的一部分,因此在这两个QRhiTextureRenderTarget实例中可以不同。

注意:在 description() 中引用的资源(如QRhiTexture实例)必须已经对它们调用了 create() 方法。

另请参阅:create()。

[覆盖虚拟] QRhiResource::Type QRhiTextureRenderTarget::resourceType() const

重新实现:QRhiResource::resourceType() const

返回资源类型。

void QRhiTextureRenderTarget::setDescription(const QRhiTextureRenderTargetDescription &desc)

设置渲染目标描述 desc

另请参阅:description

void QRhiTextureRenderTarget::setFlags(QRhiTextureRenderTarget::Flags f)

设置标志为 f

另请参阅:flags

© 2024 The Qt Company Ltd. 本文档中包含的文档贡献的版权为各自的拥有者所有。此处提供的文档根据 Free Software Foundation 发布的 GNU Free Documentation License version 1.3 的条款提供许可。Qt 和相应的标志是 The Qt Company Ltd. 在芬兰以及世界其他国家的商标。所有其他商标均为各自所有者的财产。