Renderer Class

class QQuickFramebufferObject::Renderer

保護された関数

Renderer()
virtual ~Renderer()
virtual QOpenGLFramebufferObject *createFramebufferObject(const QSize &size)
QOpenGLFramebufferObject *framebufferObject() const
void invalidateFramebufferObject()
virtual void render() = 0
virtual void synchronize(QQuickFramebufferObject *item)
void update()

詳細説明

QQuickFramebufferObject::Renderer クラスは、QQuickFramebufferObject のレンダリングロジックを実装するために使用されます。

メンバ関数ドキュメント

[protected] Renderer::Renderer()

新しいレンダラーを構築する。

この関数は、GUIスレッドがブロックされているときにシーングラフの同期フェーズで呼び出されます。

[virtual noexcept protected] Renderer::~Renderer()

レンダラーは、QQuickFramebufferObject アイテムのシーン グラフ リソースがクリーンアップされると自動的に削除されます。

この関数は、レンダリング スレッドで呼び出されます。

[virtual protected] QOpenGLFramebufferObject *Renderer::createFramebufferObject(const QSize &size)

この関数は、新しいFBOが必要になったときに呼び出される。これは最初のフレームで起こる。QQuickFramebufferObject::textureFollowsItemSize を true に設定すると、アイテムの寸法が変わるたびに再度呼び出されます。

返される FBO は、任意のアタッチメントを持つことができます。QOpenGLFramebufferObjectFormat が FBO をマルチサンプリングする必要があることを示している場合、Renderer の内部実装は 2 番目の FBO を割り当て、マルチサンプリングされた FBO をテクスチャの表示に使用する FBO にブリットします。

注: ハードウェアによっては、FBO サイズが小さいと問題があります。size はこれを考慮しているため、固定サイズでサイズをオーバーライドする場合は注意してください。最小サイズの64x64は常に動作するはずです。

注: size はデバイスのピクセル比率を考慮に入れています。つまり、すでに正しいスケールファクターが乗じられています。QQuickFramebufferObject アイテムを含むウィンドウを異なる設定のスクリーンに移動すると、FBO は自動的に再作成され、正しいサイズでこの関数が呼び出されます。

[protected] QOpenGLFramebufferObject *Renderer::framebufferObject() const

現在レンダリング中のフレームバッファオブジェクトを返します。

[protected] void Renderer::invalidateFramebufferObject()

現在のFBOを無効にするには、synchronize ()中にこの関数を呼び出す。これにより、createFramebufferObject ()で新しいFBOが作成される。

[pure virtual protected] void Renderer::render()

この関数は、FBOがレンダリングされるときに呼び出される。この時点でフレームバッファはバインドされ、glViewport はFBOサイズに合わせて設定されている。

FBOはこの関数がリターンした後、自動的にアンバインドされます。

注意: この関数が呼び出されたときに、OpenGLの状態がすべてデフォルトに設定されている、あるいは呼び出しの間に維持されていると思わないでください。Qt Quick レンダラーとカスタムレンダリングコードの両方が同じOpenGLコンテキストを使用します。つまり、この関数を呼び出す前にQuickによって状態が変更されている可能性があります。

注意: 戻る前にQQuickOpenGLUtils::resetOpenGLState ()を呼び出すことを推奨します。これにより、Qt Quick レンダラーによって使用される OpenGL 状態がリセットされるため、この関数内でレンダリングコードによって行われた状態の変更による干渉を回避できます。

[virtual protected] void Renderer::synchronize(QQuickFramebufferObject *item)

この関数は、QQuickFramebufferObject::update ()の結果として呼び出されます。

アイテムに発生した変更でレンダラーを更新するには、この関数を使用します。item は、このレンダラーをインスタンス化したアイテムです。この関数は、FBO が作成される前に 1 回呼び出されます。

たとえば、アイテムに QML で制御されるカラー プロパティがある場合、QQuickFramebufferObject::update ()を呼び出し、synchronize() を使用して新しいカラーをレンダラーにコピーし、次のフレームのレンダリングに使用できるようにします。

この関数は、レンダラーとアイテムがお互いのメンバを安全に読み書きできる唯一の場所です。

[protected] void Renderer::update()

FBO を再度レンダリングする場合に、この関数を呼び出します。

この関数をrender() から呼び出すと、次のフレームの前に FBO を再度レンダリングさせることができます。

注: この関数はレンダラー内部から使用する必要があります。GUIスレッドでアイテムを更新するには、QQuickFramebufferObject::update ()を使用します。

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