QRhiRenderBuffer Class

レンダーバッファリソース。詳細...

ヘッダ #include <rhi/qrhi.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::GuiPrivate)
qmake: QT += gui-private
以来: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

詳細説明

レンダーバッファはサンプリングも読み込みもできませんが、場合によってはテクスチャよりも利点があります:

DepthStencil レンダーバッファは、APIによっては、遅延的に割り当てられ、一時的なメモリによってバックアップされることがあります。プラットフォームによっては、深度/ステンシルバッファが物理的なバッキングをまったく使用しないことを意味します。

Color レンダーバッファは、 がサポートされていなくても、 がサポートされている場合があるので便利です。QRhi::MultisampleTexture QRhi::MultisampleRenderBuffer

バックエンドがどのようにレンダーバッファを実装するかは、アプリケーションには公開されません。レンダーバッファが通常のテクスチャによってバックアップされる場合もあれば、別の種類のネイティブリソースが使用される場合もあります。

QRhiSwapChain のカラーバッファと組み合わせてデプスステンシルバッファとして使用される(そして、デプスステンシルバッファとしてのみ使用される)レンダーバッファは、UsedWithSwapChainOnly フラグを設定する必要があります。これは二重の目的があります: そのようなバッファは、バックエンドと基礎となる API に依存しますが、より効率的であり、QRhi はカラーバッファに一致するように自動的なサイジング動作を提供します。つまり、setPixelSize() とcreate() を呼び出すことは、そのようなレンダーバッファには必要ありません。

注: これは互換性が限定的に保証されたRHI APIである。詳細はQRhi

メンバ型ドキュメント

enum QRhiRenderBuffer::Flag
flags QRhiRenderBuffer::Flags

flags() およびsetFlags() のフラグ値。

定数説明
QRhiRenderBuffer::UsedWithSwapChainOnly1 << 0DepthStencil レンダーバッファの場合、これはレンダーバッファがQRhiSwapChain との組み合わせでのみ使用され、他の方法では決して使用されないことを示します。これは、自動的なサイズ調整とリソースの再構築を提供するため、このフラグが設定されているときは常に、setPixelSize ()またはcreate ()を呼び出す必要はありません。このフラグ値は、バックエンド固有の動作をトリガーすることもある。たとえば、OpenGLでは、別のウィンドウシステム・インターフェースAPI(EGL、GLXなど)が使用されており、このフラグは、QSurfaceFormat によって要求されたウィンドウシステムが提供する深度/ステンシル・バッファがすでに存在するため、実際のレンダーバッファ・リソースの作成を回避するため、特に重要である。

Flags 型はQFlags<Flag> の typedef です。これはFlag値のORの組み合わせを格納します。

enum QRhiRenderBuffer::Type

レンダーバッファのタイプを指定します。

定数説明
QRhiRenderBuffer::DepthStencil0深度/ステンシルの組み合わせ
QRhiRenderBuffer::Color1

メンバー関数ドキュメント

[pure virtual] bool QRhiRenderBuffer::create()

対応するネイティブ・グラフィックス・リソースを作成する。以前の create() で対応するdestroy() がなかったためにすでにリソースが存在する場合は、destroy() が暗黙的に最初に呼び出されます。

グラフィックス操作に成功した場合はtrue を、失敗した場合はfalse を返します。返り値に関係なく、destroy() を呼び出すことは常に安全です。

[virtual] bool QRhiRenderBuffer::createFrom(QRhiRenderBuffer::NativeRenderBuffer src)

新しいネイティブレンダバッファオブジェクトが作成されない点を除き、create ()と同様である。代わりに、src で指定されたネイティブレンダバッファオブジェクトが使用される。

これにより、外部のグラフィックスエンジンから既存のレンダーバッファオブジェクト(グラフィックスAPIによっては、同じデバイスまたは共有コンテキストに属していなければならない)をインポートすることができる。

注意: これは現在のところOpenGLにのみ適用可能である。この関数は、EGLImageKHRのような特別な外部オブジェクトにバインドされたレンダーバッファ・オブジェクトをインポートできるようにするためだけに存在します。アプリケーションがglEGLImageTargetRenderbufferStorageOESコールを実行したら、レンダーバッファオブジェクトをこの関数に渡してラッピングQRhiRenderBuffer を作成し、それをQRhiTextureRenderTarget にカラーアタッチメントとして渡してEGLImageへのレンダリングを可能にすることができる。

注: pixelSize ()、sampleCount ()、flags ()は正しく設定する必要があります。QRhi::newRenderBuffer() に正しくないサイズやその他の値を渡し、その後に createFrom() を使用して、ネイティブのレンダーバッファ・オブジェクトだけで十分な値を推測できると期待するのは誤りであり、問題につながります。

注: QRhiRenderBuffer はネイティブ・オブジェクトの所有権を取らず、destroy ()はそのオブジェクトを解放しない。

注: この関数は、QRhi::RenderBufferImport 機能がsupported として報告された場合にのみ実装される。そうでない場合、この関数は何もせず、戻り値はfalse です。

成功した場合はtrue を返し、サポートされていない場合はfalse を返します。

QRhiRenderBuffer::Flags QRhiRenderBuffer::flags() const

フラグを返す。

setFlags()も参照

QSize QRhiRenderBuffer::pixelSize() const

ピクセルサイズを返します。

setPixelSize()も参照

[override virtual] 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()も参照

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.