QRhiTextureRenderTarget 类
纹理渲染目标资源。 更多...
头文件 | #include <QRhiTextureRenderTarget> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake | QT += gui |
自从 | Qt 6.6 |
继承 | QRhiRenderTarget |
公共类型
公共函数
virtual bool | create() = 0 |
QRhiTextureRenderTargetDescription | description() const |
QRhiTextureRenderTarget::Flags | flags() const |
virtual QRhiRenderPassDescriptor * | newCompatibleRenderPassDescriptor() = 0 |
void | setDescription(const QRhiTextureRenderTargetDescription &desc) |
void | setFlags(QRhiTextureRenderTarget::Flags f) |
重实现的公共函数
virtual QRhiResource::Type | resourceType() 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::PreserveColorContents | 1 << 0 | 指示在开始渲染传递时加载着色附件的内容,而不是清除。这在移动端(分块)GPU上可能更为昂贵,但允许在传递之间保持现有内容。 |
QRhiTextureRenderTarget::PreserveDepthStencilContents | 1 << 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实例可以共享相同的渲染通道描述符。相关的QRhiTexture或QRhiRenderBuffer实例不是渲染通道描述符的一部分,因此在这两个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. 在芬兰以及世界其他国家的商标。所有其他商标均为各自所有者的财产。