QQuickFramebufferObject Class

QQuickFramebufferObject クラスは、フレームバッファオブジェクト(FBO)を使用した OpenGL レンダリングを Qt Quick に統合するための便利なクラスです。詳細...

Header: #include <QQuickFramebufferObject>
CMake: find_package(Qt6 REQUIRED COMPONENTS Quick)
target_link_libraries(mytarget PRIVATE Qt6::Quick)
qmake: QT += quick
Inherits: QQuickItem

パブリックタイプ

class Renderer

プロパティ

パブリック関数

QQuickFramebufferObject(QQuickItem *parent = nullptr)
virtual QQuickFramebufferObject::Renderer *createRenderer() const = 0
bool mirrorVertically() const
void setMirrorVertically(bool enable)
void setTextureFollowsItemSize(bool follows)
bool textureFollowsItemSize() const

再実装パブリック関数

virtual bool isTextureProvider() const override
virtual void releaseResources() override
virtual QSGTextureProvider *textureProvider() const override

シグナル

詳しい説明

警告 このクラスはQt QuickがOpenGL経由でレンダリングするときのみ機能します。VulkanやMetalのような他のグラフィックスAPIとは互換性がありません。このクラスは、Qt 5 アプリケーションが OpenGL と連携している限り、ソースの互換性を壊すことなく機能させるために存在するレガシークラスとして扱う必要があります。

ほとんどのプラットフォームでは、レンダリングは専用のスレッドで行われます。このため、QQuickFramebufferObject クラスでは、アイテムの実装と FBO のレンダリングを厳密に分離しています。QMLが必要とするプロパティやUI関連ヘルパー関数などのアイテムロジックは、すべてQQuickFramebufferObjectクラスのサブクラスに置く必要があります。レンダリングに関連するものはすべて、QQuickFramebufferObject::Renderer クラスに配置する必要があります。

レースコンディションや2つのスレッドからの読み書きの問題を避けるために、レンダラーとアイテムは決して共有変数を読み書きしないことが重要です。アイテムとレンダラー間の通信は、主にQQuickFramebufferObject::Renderer::synchronize() 関数を介して行われる必要があります。この関数は、GUI スレッドがブロックされている間にレンダリング スレッドで呼び出されます。

アイテムとレンダラー間の通信にキュー接続またはイベントを使用することも可能です。

レンダラーと FBO は両方とも内部でメモリ管理されます。

FBO にレンダリングするには、ユーザーは Renderer クラスをサブクラス化し、そのRenderer::render() 関数を再実装する必要があります。Rendererのサブクラスは、createRenderer ()から返されます。

FBOのサイズは、デフォルトではアイテムのサイズに適応します。サイズを固定したい場合は、textureFollowsItemSizefalse に設定し、QQuickFramebufferObject::Renderer::createFramebufferObject() から任意のテクスチャを返します。

Qt 5.4から、QQuickFramebufferObjectクラスはtexture providerShaderEffects 、テクスチャ・プロバイダを消費する他のクラスで直接使用できます。

シーングラフとレンダリングも参照してください

プロパティ ドキュメント

mirrorVertically : bool

このプロパティは、描画時に FBO のコンテンツのサイズが垂直にミラーリングされるべきかどうかを制御します。これにより、標準の期待値に従わないサードパーティのレンダリングコードを簡単に統合できる。

デフォルト値はfalse です。

アクセス関数:

bool mirrorVertically() const
void setMirrorVertically(bool enable)

通知シグナル:

void mirrorVerticallyChanged(bool)

textureFollowsItemSize : bool

このプロパティは、FBO のテクスチャのサイズがQQuickFramebufferObject アイテムの寸法に従うかどうかを制御します。このプロパティを False に設定すると、FBO は最初に表示されるときに一度だけ作成されます。このプロパティを true に設定すると、アイテムの寸法が変更されるたびに FBO が再作成されます。

デフォルト値はtrue です。

アクセス機能:

bool textureFollowsItemSize() const
void setTextureFollowsItemSize(bool follows)

Notifier シグナル:

void textureFollowsItemSizeChanged(bool)

メンバ関数 ドキュメント

QQuickFramebufferObject::QQuickFramebufferObject(QQuickItem *parent = nullptr)

親を持つ新しい QQuickFramebufferObject を構築しますparent

[pure virtual] QQuickFramebufferObject::Renderer *QQuickFramebufferObject::createRenderer() const

FBO へのレンダリングに使用するレンダラーを作成するには、この関数を再実装します。

この関数は、GUIスレッドがブロックされている間、レンダリングスレッドで呼び出されます。

[override virtual] bool QQuickFramebufferObject::isTextureProvider() const

再実装します:QQuickItem::isTextureProvider() const.

[override virtual] void QQuickFramebufferObject::releaseResources()

再実装:QQuickItem::releaseResources().

[override virtual] QSGTextureProvider *QQuickFramebufferObject::textureProvider() const

再リンプルメント: () const:QQuickItem::textureProvider() const.

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