QRhiGles2InitParams Struct

OpenGL固有の初期化パラメータ。詳細...

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: QRhiInitParams

パブリック関数

パブリック変数

QSurface *fallbackSurface
QSurfaceFormat format
QOpenGLContext *shareContext
QWindow *window

静的パブリック・メンバー

QOffscreenSurface *newFallbackSurface(const QSurfaceFormat &format = QSurfaceFormat::defaultFormat())

詳細説明

注: これは互換性保証に制限のあるRHI APIです。詳細はQRhi を参照してください。

OpenGLベースのQRhi は、QOpenGLContext と組み合わせて使用できる、すでに作成されたQSurface が必要です。ほとんどの場合、これは実際にはQOffscreenSurface です。さらに、オプションではあるが、最初のQRhiSwapChain がターゲットとするQWindow も渡すことが推奨される。

QOffscreenSurface *fallbackSurface = QRhiGles2InitParams::newFallbackSurface();
QRhiGles2InitParams params;
params.fallbackSurface = fallbackSurface;
params.window = window;
rhi = QRhi::create(QRhi::OpenGLES2, &params);

デフォルトでは、QRhi はそれ自身でQOpenGLContext を作成する。このアプローチは、各レンダリングスレッドに専用のQRhi があるようなスレッドシナリオを含め、ほとんどの場合にうまく機能します。それぞれのQRhi に対してQOpenGLContext が存在するため、OpenGLコンテキストの要件(コンテキストは1つのスレッド上でのみカレントとなる)は満たされます。暗黙的に作成されたコンテキストは、QRhi とともに自動的に破棄される。

コンテキストのQSurfaceFormatformat で指定されます。コンストラクタはこれをQSurfaceFormat::defaultFormat() に設定するので、コンストラクタが実行される前に適切な設定でQSurfaceFormat::setDefaultFormat() を呼び出すアプリケーションは、format の値を変更する必要はありません。

注: レンダラが深度テストまたはステンシルテストに依存する場合は、グローバルなデフォルトのQSurfaceFormat で、または関係するすべてのQSurfaceFormat インスタンスで個別に、深度とステンシルバッファのサイズを 24 と 8 に設定することを忘れないでください:formatnewFallbackSurface() に渡されるフォーマット引数、およびQRhi とともに使用されるすべてのQWindow で。

QSurface fallbackSurfaceスレッド化された状況でのミスを防ぐため、QRhi によって自動的に作成されることはありません。これは、QWindow のように、QSurface のサブクラスのインスタンスは、gui/メイン・スレッドでのみ作成されることが多いからです。

便宜上、アプリケーションはnewFallbackSurface() を使うことができる。これは、QRhi の後に作成されるQOpenGLContext と互換性のあるQOffscreenSurface を作成して返す。返されたQOffscreenSurface の所有権は呼び出し元に移され、QRhi はそれを破壊しないことに注意。

注意: OpenGLバックエンドでは、QRhiSwapChain は、サーフェスタイプがQSurface::OpenGLSurface またはQSurface::RasterGLSurface に設定されているQWindow インスタンスのみを対象とすることができる。

注: window はオプションです。マルチアダプターやマルチスクリーンシステムでの問題を避けるため、可能な限り指定することを推奨します。window が設定されていない場合、一番最初のQOpenGLContext::makeCurrent() はfallbackSurface で起こります。 これは、プラットフォームによっては (たとえば Windows では) 不可視のウィンドウになる可能性があり、 場合によっては予期せぬ問題を引き起こすかもしれません。

既存のQOpenGLContext とリソースを共有したい場合、shareContext を既存のQOpenGLContext に設定することができる。また、Qt::AA_ShareOpenGLContexts が有効になっている場合は、 を使用することもできます。

既存のOpenGLコンテキストとの連携

別のグラフィックス・エンジンと相互運用する場合、同じOpenGLコンテキストを使用するQRhi インスタンスを取得する必要があるかもしれません。これは、QRhiGles2NativeHandles へのポインタをQRhi::create() に渡すことで実現できる。このとき、QRhiGles2NativeHandles::context には NULL 以外の値を設定しなければならない。

別の方法としては、他のエンジンのコンテキストを持つshares resourcesQOpenGLContext として作成し、そのコンテキストをQRhiGles2NativeHandles 経由で渡す方法があります。

QRhi は、QRhiGles2NativeHandles を介して渡されたQOpenGLContext の所有権を持たない。

メンバ関数ドキュメント

QRhiGles2InitParams::QRhiGles2InitParams()

新しい QRhiGles2InitParams を構築します。

format は () に設定される。QSurfaceFormat::defaultFormat

[static] QOffscreenSurface *QRhiGles2InitParams::newFallbackSurface(const QSurfaceFormat &format = QSurfaceFormat::defaultFormat())

QRhiGles2InitParams を介して渡すことでQRhi で使用できる新しいQOffscreenSurface を返す。

format が指定されていない場合、そのデフォルト値はQSurfaceFormat::setDefaultFormat() で設定可能なグローバル・デフォルト・フォーマットです。

format は、互換性のないコンテキストやサーフェスによる問題を回避するために、適切に調整されます。

注意: この関数はgui/メインスレッド上でのみ呼び出されなければならない。

注意 :関連するQRhi が破棄されたら、gui/メインスレッド上で返されたQOffscreenSurface を破棄するのはアプリケーションの責任である。QRhiQOffscreenSurface を破壊しない。

メンバ変数ドキュメント

QSurface *QRhiGles2InitParams::fallbackSurface

format と互換性のあるQSurface 。通常、QOffscreenSurface 。 これを提供することは必須です。QOffscreenSurfaceQWindow )と同様に、QRhi ( )が別のスレッドで作成・操作されたとしても、メイン(gui)スレッドでのみ作成・破棄されなければなりません。

QSurfaceFormat QRhiGles2InitParams::format

QSurfaceFormat 、デフォルトではQSurfaceFormat::defaultFormat() に初期化される。

QOpenGLContext *QRhiGles2InitParams::shareContext

オプションで、リソースを共有するQOpenGLContextQRhi は独自のコンテキストを作成し、このメンバを有効なQOpenGLContext に設定すると、そのコンテキストでsetShareContext ()を呼び出すことになる。

QWindow *QRhiGles2InitParams::window

オプションですが、QRhiQWindow をターゲットにする場合に設定することをお勧めします。

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