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
定数 | 値 | 説明 |
---|---|---|
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()
対応するネイティブグラフィックスリソースを作成します。対応する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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。