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, ¶ms);
デフォルトでは、QRhi はそれ自身でQOpenGLContext を作成する。このアプローチは、各レンダリングスレッドに専用のQRhi があるようなスレッドシナリオを含め、ほとんどの場合にうまく機能します。それぞれのQRhi に対してQOpenGLContext が存在するため、OpenGLコンテキストの要件(コンテキストは1つのスレッド上でのみカレントとなる)は満たされます。暗黙的に作成されたコンテキストは、QRhi とともに自動的に破棄される。
コンテキストのQSurfaceFormat はformat
で指定されます。コンストラクタはこれをQSurfaceFormat::defaultFormat() に設定するので、コンストラクタが実行される前に適切な設定でQSurfaceFormat::setDefaultFormat() を呼び出すアプリケーションは、format
の値を変更する必要はありません。
注: レンダラが深度テストまたはステンシルテストに依存する場合は、グローバルなデフォルトのQSurfaceFormat で、または関係するすべてのQSurfaceFormat インスタンスで個別に、深度とステンシルバッファのサイズを 24 と 8 に設定することを忘れないでください:format
、newFallbackSurface() に渡されるフォーマット引数、および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 resources をQOpenGLContext として作成し、そのコンテキストを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 を破棄するのはアプリケーションの責任である。QRhi はQOffscreenSurface を破壊しない。
メンバ変数ドキュメント
QSurface *QRhiGles2InitParams::fallbackSurface
format と互換性のあるQSurface 。通常、QOffscreenSurface 。 これを提供することは必須です。QOffscreenSurface (QWindow )と同様に、QRhi ( )が別のスレッドで作成・操作されたとしても、メイン(gui)スレッドでのみ作成・破棄されなければなりません。
QSurfaceFormat QRhiGles2InitParams::format
QSurfaceFormat 、デフォルトではQSurfaceFormat::defaultFormat() に初期化される。
QOpenGLContext *QRhiGles2InitParams::shareContext
オプションで、リソースを共有するQOpenGLContext 。QRhi は独自のコンテキストを作成し、このメンバを有効なQOpenGLContext に設定すると、そのコンテキストでsetShareContext ()を呼び出すことになる。
QWindow *QRhiGles2InitParams::window
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。