QRhiRenderBuffer Class

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

Header: #include <rhi/qrhi.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::GuiPrivate)
qmake: QT += gui-private
Since: Qt 6.6
Inherits: 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()

対応するネイティブグラフィックスリソースを作成します。対応するdestroy() がない以前の create() によって既にリソースが存在する場合、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()も参照して ください。

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。