QOffscreenSurface Class

QOffscreenSurface クラスは、基礎となるプラットフォームのオフスクリーンサーフェスを表します。詳細...

ヘッダー #include <QOffscreenSurface>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
を継承する:QObject そしてQSurface

パブリック関数

QOffscreenSurface(QScreen *targetScreen = nullptr, QObject *parent = nullptr)
virtual ~QOffscreenSurface()
void create()
void destroy()
bool isValid() const
QNativeInterface *nativeInterface() const
QSurfaceFormat requestedFormat() const
QScreen *screen() const
void setFormat(const QSurfaceFormat &format)
void setScreen(QScreen *newScreen)

再実装パブリック関数

virtual QSurfaceFormat format() const override
virtual QSize size() const override
virtual QSurface::SurfaceType surfaceType() const override

シグナル

void screenChanged(QScreen *screen)

詳細説明

QOffscreenSurfaceは、QWindow を作成することなく、任意のスレッドでOpenGLによるレンダリングを可能にするために、QOpenGLContext とともに使用されることを意図しています。

サーフェスは通常レンダリング可能ですが、サーフェスのピクセルにはアクセスできません。QOffscreenSurfaceは、テクスチャやフレームバッファオブジェクトのようなOpenGLリソースを作成するためにのみ使用されるべきである。

アプリケーションは通常、メインのレンダリングスレッドをストールさせないために、QOffscreenSurfaceを使用して、別スレッドで時間のかかるタスクを実行します。QOffscreenSurfaceのコンテキストで作成されたリソースは、メインのOpenGLコンテキストと共有することができます。一般的な使用例としては、テクスチャの非同期アップロードや、QOpenGLFramebufferObject へのレンダリングなどがあります。

オフスクリーン・サーフェスがどのように実装されるかは、基盤となるプラットフォームに依存しますが、通常はピクセル・バッファ(pbuffer)を使用します。プラットフォームがオフスクリーン・サーフェスを実装またはサポートしていない場合、QOffscreenSurface は内部的に不可視のQWindow を使用します。

注意: QOffscreenSurfaceは、いくつかのプラットフォームではQWindow 。クロスプラットフォームのアプリケーションでは、create ()がメイン(GUI)スレッドでのみ呼び出されるようにする必要があります。QOffscreenSurfaceは、他のスレッドでmakeCurrent ()を使用しても安全ですが、初期化と破棄は常にメイン(GUI)スレッドで行わなければなりません。

注意: 与えられたコンテキストやウィンドウとの互換性が保証されたオフスクリーン・サーフェスを作成するには、必ずコンテキストやウィンドウの実際のフォーマット、つまりコンテキストやウィンドウが作成された後に QOpenGLContext::format() やQWindow::format() から返されるQSurfaceFormat にフォーマットを設定してください。QWindow::requestedFormat() から返されたフォーマットをsetFormat() に渡すと、互換性のないオフスクリーン・サーフェスになる可能性があります。

注意: プラットフォームによっては、サーフェスレス・コンテキスト拡張(たとえば、EGL_KHR_surfaceless_context)が利用可能な場合、それを利用することがあります。この場合、基盤となるネイティブ・サーフェスは存在しません。QOffscreenSurfaceの使用例(FBOへのレンダリング、テクスチャのアップロード)では、これは問題ではありません。

メンバー関数ドキュメント

[explicit] QOffscreenSurface::QOffscreenSurface(QScreen *targetScreen = nullptr, QObject *parent = nullptr)

与えられたparent で、targetScreen 用のオフスクリーン・サーフェスを作成する。

create() が呼び出されるまで、基盤となるプラットフォームサーフェスは作成されない。

setScreen() およびcreate()も参照して ください。

[virtual noexcept] QOffscreenSurface::~QOffscreenSurface()

画面外の表面を破壊する。

void QOffscreenSurface::create()

オフスクリーン・サーフェスに関連するプラットフォーム・リソースを割り当てる。

この時点で、setFormat ()を使用して設定されたサーフェスフォーマットが実際のネイティブサーフェスに解決される。

必要に応じてdestroy() を呼び出して、プラットフォーム・リソースを解放する。

注意: プラットフォームによっては、この関数をメイン(GUI)スレッド上で呼び出す必要があります。

destroy()も参照してください

void QOffscreenSurface::destroy()

このオフスクリーンサーフェスに関連付けられたネイティブプラットフォームリソースを解放する。

create()も参照してください

[override virtual] QSurfaceFormat QOffscreenSurface::format() const

再実装:QSurface::format() const.

このオフスクリーン・サーフェスの実際のフォーマットを返します。

オフスクリーン・サーフェスが作成された後、この関数はサーフェスの実際のフォーマットを返します。要求されたフォーマットがプラットフォームによって満たされなかった場合、要求されたフォーマットとは異なるかもしれません。

setFormat()、create()、requestedFormat()も参照

bool QOffscreenSurface::isValid() const

このオフスクリーン・サーフェスが有効な場合はtrue を返し、そうでない場合はfalse を返す。

オフスクリーン・サーフェスは、プラットフォーム・リソースが正常に割り当てられた場合に有効である。

create()も参照してください

template <typename QNativeInterface> QNativeInterface *QOffscreenSurface::nativeInterface() const

指定された型のサーフェスのネイティブ・インターフェースを返します。

この関数は、QNativeInterface 名前空間で定義されている QOffScreenSurface のプラットフォーム固有の機能へのアクセスを提供します:

QNativeInterface::QAndroidOffscreenSurface

Android におけるオフスクリーンサーフェスのネイティブインターフェース

要求されたインターフェースが利用できない場合は、nullptr が返されます。

QSurfaceFormat QOffscreenSurface::requestedFormat() const

このオフスクリーン・サーフェスの要求されたサーフェスフォーマットを返します。

要求されたフォーマットがプラットフォームの実装でサポートされていない場合、requestedFormatは実際のオフスクリーンサーフェスフォーマットとは異なります。

これはsetFormat() で設定された値です。

setFormat() およびformat()も参照

QScreen *QOffscreenSurface::screen() const

オフスクリーン・サーフェスが接続されているスクリーンを返す。

setScreen()も参照

[signal] void QOffscreenSurface::screenChanged(QScreen *screen)

このシグナルは、setScreen ()で明示的に設定されるか、ウィンドウのスクリーンが取り除かれたときに自動的に設定されるかして、オフスクリーン・サーフェスのscreen が変更されたときに発せられる。

void QOffscreenSurface::setFormat(const QSurfaceFormat &format)

オフスクリーン・サーフェスformat を設定する。

サーフェスフォーマットはcreate() 関数で解決されます。create() の後にこの関数を呼び出しても、ネイティブサーフェスのサーフェスフォーマットは再解決されません。

format()、create()、destroy()も参照

void QOffscreenSurface::setScreen(QScreen *newScreen)

オフスクリーン・サーフェスが接続されているスクリーンを設定する。

オフスクリーン・サーフェスが作成されている場合は、newScreen

screen()も参照してください

[override virtual] QSize QOffscreenSurface::size() const

再実装:QSurface::size() const.

オフスクリーンサーフェスのサイズを返します。

[override virtual] QSurface::SurfaceType QOffscreenSurface::surfaceType() const

再実装:QSurface::surfaceType() const.

オフスクリーン・サーフェスのサーフェス型を返します。

オフスクリーン・サーフェスのサーフェス型は常にQSurface::OpenGLSurface です。

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