QRhiGles2InitParams Struct

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

ヘッダ #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
継承: 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 をターゲットにする場合は設定することを推奨する。

© 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.