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