Renderbuffer resource. 更多...
头: | #include <QRhiRenderBuffer> |
CMake: |
find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
Since: | Qt 6.6 |
继承: | QRhiResource |
struct | NativeRenderBuffer |
enum | Flag { UsedWithSwapChainOnly } |
flags | Flags |
enum | Type { DepthStencil, Color } |
virtual bool | create () = 0 |
virtual bool | createFrom (QRhiRenderBuffer::NativeRenderBuffer src ) |
QRhiRenderBuffer::Flags | flags () const |
QSize | pixelSize () const |
int | sampleCount () const |
void | setFlags (QRhiRenderBuffer::Flags f ) |
void | setPixelSize (const QSize & sz ) |
void | setSampleCount (int s ) |
void | setType (QRhiRenderBuffer::Type t ) |
QRhiRenderBuffer::Type | type () const |
virtual QRhiResource::Type | resourceType () const override |
Renderbuffers cannot be sampled or read but have some benefits over textures in some cases:
A DepthStencil renderbuffer may be lazily allocated and be backed by transient memory with some APIs. On some platforms this may mean the depth/stencil buffer uses no physical backing at all.
颜色 renderbuffers are useful since QRhi::MultisampleRenderBuffer may be supported even when QRhi::MultisampleTexture is not.
How the renderbuffer is implemented by a backend is not exposed to the applications. In some cases it may be backed by ordinary textures, while in others there may be a different kind of native resource used.
Renderbuffers that are used as (and are only used as) depth-stencil buffers in combination with a QRhiSwapChain 's color buffers should have the UsedWithSwapChainOnly flag set. This serves a double purpose: such buffers, depending on the backend and the underlying APIs, be more efficient, and QRhi provides automatic sizing behavior to match the color buffers, which means calling setPixelSize () 和 create () are not necessary for such renderbuffers.
注意: This is a RHI API with limited compatibility guarantees, see QRhi 了解细节。
Flag values for flags () 和 setFlags ()
常量 | 值 | 描述 |
---|---|---|
QRhiRenderBuffer::UsedWithSwapChainOnly
|
1 << 0
|
For DepthStencil renderbuffers this indicates that the renderbuffer is only used in combination with a QRhiSwapChain , and never in any other way. This provides automatic sizing and resource rebuilding, so calling setPixelSize () 或 create () is not needed whenever this flag is set. This flag value may also trigger backend-specific behavior, for example with OpenGL, where a separate windowing system interface API is in use (EGL, GLX, etc.), the flag is especially important as it avoids creating any actual renderbuffer resource as there is already a windowing system provided depth/stencil buffer as requested by QSurfaceFormat . |
Flags 类型是 typedef 对于 QFlags <Flag>。它存储 Flag 值的 OR 组合。
Specifies the type of the renderbuffer
常量 | 值 | 描述 |
---|---|---|
QRhiRenderBuffer::DepthStencil
|
0
|
Combined depth/stencil |
QRhiRenderBuffer::Color
|
1
|
颜色 |
[pure virtual]
bool
QRhiRenderBuffer::
create
()
Creates the corresponding native graphics resources. If there are already resources present due to an earlier create() with no corresponding destroy (),然后 destroy () is called implicitly first.
返回
true
when successful,
false
when a graphics operation failed. Regardless of the return value, calling
destroy
() is always safe.
[虚拟]
bool
QRhiRenderBuffer::
createFrom
(
QRhiRenderBuffer::NativeRenderBuffer
src
)
类似于 create () except that no new native renderbuffer objects are created. Instead, the native renderbuffer object specified by src 被使用。
This allows importing an existing renderbuffer object (which must belong to the same device or sharing context, depending on the graphics API) from an external graphics engine.
注意: This is currently applicable to OpenGL only. This function exists solely to allow importing a renderbuffer object that is bound to some special, external object, such as an EGLImageKHR. Once the application performed the glEGLImageTargetRenderbufferStorageOES call, the renderbuffer object can be passed to this function to create a wrapping QRhiRenderBuffer , which in turn can be passed in as a color attachment to a QRhiTextureRenderTarget to enable rendering to the EGLImage.
注意: pixelSize (), sampleCount (),和 flags () must still be set correctly. Passing incorrect sizes and other values to QRhi::newRenderBuffer () and then following it with a createFrom() expecting that the native renderbuffer object alone is sufficient to deduce such values is wrong and will lead to problems.
注意: QRhiRenderBuffer does not take ownership of the native object, and destroy () will not release that object.
注意:
This function is only implemented when the
QRhi::RenderBufferImport
feature is reported as
supported
. Otherwise, the function does nothing and the return value is
false
.
返回
true
when successful,
false
when not supported.
Returns the flags.
另请参阅 setFlags ().
Returns the pixel size.
另请参阅 setPixelSize ().
[override virtual]
QRhiResource::Type
QRhiRenderBuffer::
resourceType
() const
重实现: QRhiResource::resourceType() const .
Returns the resource type.
Returns the sample count. 1 means no multisample antialiasing.
另请参阅 setSampleCount ().
Sets the flags to f .
另请参阅 flags ().
Sets the size (in pixels) to sz .
另请参阅 pixelSize ().
Sets the sample count to s .
另请参阅 sampleCount ().
Sets the type to t .
另请参阅 type ().
Returns the renderbuffer type.
另请参阅 setType ().