QRhiRenderBuffer 类

渲染缓冲区资源。 更多...

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

公开类型

结构体NativeRenderBuffer
枚举标志 { UsedWithSwapChainOnly }
标志标志
枚举类型 { DepthStencil, Color }

公开函数

虚 boolcreate() = 0
虚 boolcreateFrom(QRhiRenderBuffer::NativeRenderBuffer src)
QRhiRenderBuffer::Flags标志() const
QSize像素大小() const
int样本计数() const
void设置标志(QRhiRenderBuffer::Flags f)
void设置像素大小(const QSize &sz)
void设置样本计数(int s)
void设置类型(QRhiRenderBuffer::Type t)
QRhiRenderBuffer::Type类型() const

重写公开函数

虚 QRhiResource::Type资源类型() const override

详细描述

渲染缓冲区不能被采样或读取,但在某些情况下比纹理有一些优势

DepthStencil 渲染缓冲区可能延迟分配,并有一些 API 支持使用短暂内存作为后盾。在某些平台上,这可能意味着深度/模板缓冲区根本不使用物理后盾。

Color 渲染缓冲区很有用,因为即使 QRhi::MultisampleTexture 不支持,QRhi::MultisampleRenderBuffer 也可能得到支持。

渲染缓冲区是如何由后端实现的,对于应用程序是不可见的。在某些情况下,它可能由普通纹理支持,而在其他情况下,可能使用其他类型的本地资源。

用作(并且仅用作)与QRhiSwapChain的颜色缓冲区结合的深度模板缓冲区应该设置UsedWithSwapChainOnly标志。这有两个作用:这样的大型缓冲区,根据后端和底层API,可能会更高效,并且QRhi提供自动调整大小行为以匹配颜色缓冲区,这意味着对于这种渲染缓冲区,调用setPixelSize()和create()是不必要的。

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

成员类型文档

枚举 QRhiRenderBuffer::Flag
flags QRhiRenderBuffer::Flags

用于flags()和setFlags()的Flag值

常数描述
QRhiRenderBuffer::UsedWithSwapChainOnly1 << 0对于DepthStencil渲染缓冲区,这表示渲染缓冲区只与QRhiSwapChain结合使用,而不会以任何其他方式使用。这提供了自动调整大小和资源重建,因此不需要设置此标志时调用setPixelSize()或create()。此标志值还可能触发特定于后端的行为,例如在OpenGL中,如果使用单独的窗口系统接口API(EGL、GLX等),则此标志非常重要,因为它避免了创建实际的渲染缓冲区资源,因为已经提供了按请求QSurfaceFormat请求的窗口系统深度/模板缓冲区。

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

枚举 QRhiRenderBuffer::Type

指定渲染缓冲区的类型

常数描述
QRhiRenderBuffer::DepthStencil0深度/模板组合
QRhiRenderBuffer::Color1颜色

成员函数文档

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

创建相应的本地图形资源。如果有由于早先不带对应destroy()调用的destroy(),则隐式调用destroy()。

成功时返回true,图形操作失败时返回false。无论返回值如何,调用destroy()总是安全的。

[虚函数] bool QRhiRenderBuffer::createFrom(QRhiRenderBuffer::NativeRenderBuffer src)

类似于create(),但它不会创建任何新的本地渲染缓冲区对象。相反,使用由src指定的本地渲染缓冲区对象。

这允许从外部图形引擎导入现有的渲染缓冲区对象(必须属于同一设备或共享上下文,具体取决于图形API)。

注意: 当前仅适用于OpenGL。此函数仅用于允许导入绑定到某些特殊外部对象(例如EGLImageKHR)的renderbuffer对象。一旦应用程序执行了glEGLImageTargetRenderbufferStorageOES调用,就可以将renderbuffer对象传递给此函数以创建一个包装的QRhiRenderBuffer,然后将其作为颜色附件传递给QRhiTextureRenderTarget,从而实现向EGLImage渲染。

注意: pixelSize()、sampleCount()和flags()必须仍然设置正确。向QRhi::newRenderBuffer()传递错误的尺寸和其他值,然后跟随createFrom()期望仅使用本地renderbuffer对象就能推断出这些值是错误的,并且会导致问题。

注意: QRhiRenderBuffer不拥有本地对象,并且destroy()不会释放该对象。

注意: 仅在报告QRhi::RenderBufferImport功能为支持时实现此函数。否则,函数不执行任何操作,返回值是false

成功时返回true,不支持时返回false

QRhiRenderBuffer::Flags QRhiRenderBuffer::flags() const

返回标志。

另请参阅 setFlags

QSize QRhiRenderBuffer::pixelSize() const

返回像素大小。

另请参阅 setPixelSize

[重写虚函数] QRhiResource::Type QRhiRenderBuffer::resourceType() const

重写: QRhiResource::resourceType() const

返回资源类型。

int QRhiRenderBuffer::sampleCount() const

返回样本计数。1表示无多采样抗锯齿。

另请参阅 setSampleCount

void QRhiRenderBuffer::setFlags(QRhiRenderBuffer::Flags f)

将标志设置为f

另请参阅 flags

void QRhiRenderBuffer::setPixelSize(const QSize &sz)

将大小(以像素为单位)设置为sz

另请参阅 pixelSize

void QRhiRenderBuffer::setSampleCount(int s)

将样本计数设置为s

另请参阅 sampleCount

void QRhiRenderBuffer::setType(QRhiRenderBuffer::Type t)

将类型设置为t

另请参阅 type

QRhiRenderBuffer::Type QRhiRenderBuffer::type() const

返回渲染缓冲区的类型。

另请参阅 setType().

© 2024 The Qt Company Ltd. 在此包含的文档贡献权归各自所有者所有。提供的文档受自由软件基金会发布的 GNU自由文档许可证版本1.3 的条款约束。Qt及其相关商标是芬兰和/或其他国家的The Qt Company Ltd.的商标。所有其他商标均为其各自所有者的财产。