QRhiRenderBuffer 类
渲染缓冲区资源。 更多...
头文件 | #include <QRhiRenderBuffer> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake | QT += gui |
自 | Qt 6.6 |
继承 | QRhiResource |
公开类型
结构体 | NativeRenderBuffer |
枚举 | 标志 { UsedWithSwapChainOnly } |
标志 | 标志 |
枚举 | 类型 { DepthStencil, Color } |
公开函数
虚 bool | create() = 0 |
虚 bool | createFrom(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
常数 | 值 | 描述 |
---|---|---|
QRhiRenderBuffer::UsedWithSwapChainOnly | 1 << 0 | 对于DepthStencil渲染缓冲区,这表示渲染缓冲区只与QRhiSwapChain结合使用,而不会以任何其他方式使用。这提供了自动调整大小和资源重建,因此不需要设置此标志时调用setPixelSize()或create()。此标志值还可能触发特定于后端的行为,例如在OpenGL中,如果使用单独的窗口系统接口API(EGL、GLX等),则此标志非常重要,因为它避免了创建实际的渲染缓冲区资源,因为已经提供了按请求QSurfaceFormat请求的窗口系统深度/模板缓冲区。 |
Flags类型是QFlags<Flag>的类型定义。它存储了Flag值的“或”组合。
枚举 QRhiRenderBuffer::Type
指定渲染缓冲区的类型
常数 | 值 | 描述 |
---|---|---|
QRhiRenderBuffer::DepthStencil | 0 | 深度/模板组合 |
QRhiRenderBuffer::Color | 1 | 颜色 |
成员函数文档
[纯虚函数]
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.的商标。所有其他商标均为其各自所有者的财产。