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 |
プロパティ
- mirrorVertically : bool
- textureFollowsItemSize : bool
パブリック関数
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 |
シグナル
void | mirrorVerticallyChanged(bool) |
void | textureFollowsItemSizeChanged(bool) |
詳しい説明
警告 このクラスは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のサイズは、デフォルトではアイテムのサイズに適応します。サイズを固定したい場合は、textureFollowsItemSize をfalse
に設定し、QQuickFramebufferObject::Renderer::createFramebufferObject() から任意のテクスチャを返します。
Qt 5.4から、QQuickFramebufferObjectクラスはtexture provider 、ShaderEffects 、テクスチャ・プロバイダを消費する他のクラスで直接使用できます。
シーングラフとレンダリングも参照してください 。
プロパティ ドキュメント
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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。