Qt Quick OpenVGアダプテーション

OpenVGアダプテーションは、OpenVGコマンドを使用してシーングラフの内容をレンダリングする Qt Quick2用の代替レンダラーで、OpenVGコマンドを使用してシーングラフのコンテンツをレンダリングし、ハードウェアアクセラレーションによる2Dベクターおよびラスターグラフィックスを提供します。ソフトウェア・アダプテーションと同様に、いくつかの機能や最適化は利用できなくなります。ほとんどのQt Quick 2アプリケーションは変更なしで動作しますが、サポートされていない機能を使用しようとすると無視されます。

EGLの要件

デフォルトのOpenGLレンダラーとは異なり、OpenVGコンテキストを取得するための組み込みサポートはありません。これは、レンダラーが現在のコンテキストを要求し、管理する責任を負うことを意味します。これを行うには、OpenVGレンダラーで直接EGLを使用します。そのため、OpenVG レンダラーは、QSurfaceFormat::OpenVG をサポートする QWindows の作成をサポートするプラットフォーム プラグインでのみ使用できます。このウィンドウからレンダラーが EGLSurface を取得し、それを EGLContext で使用して OpenVG コンテンツをレンダリングできます。

レンダラー

OpenVGレンダラは、OpenVG APIを使用してコマンドとデータをVector GPUに送信し、CPUからグラフィックス・レンダリングをオフロードして、加速された方法でシーングラフをレンダリングします。矩形やフォントグリフのレンダリングのような多くのオペレーションは、OpenVGにとって理想的です。一般的にテクスチャを含むようなシーングラフアイテムのレンダリングは、OpenVG レンダラーでは VGImage を使って処理されます。さらに、(レイヤーのように)オフスクリーンのサーフェスにレンダリングする場合、シーンサブツリーはシーンで再利用できる VGImage にレンダリングされます。

レンダリングループ

OpenVG Renderer は、Basic のレンダリングループの動作を反映し、すべての OpenVG コマンドをシングルスレッドで実行します。

レンダリングループの詳細については、Qt Quick Scene Graph を参照してください。

シェーダー効果

ShaderEffect QtQuick 2 のコンポーネントは、OpenVG アダプテーションではレンダリングできません。 と QML アイテムレイヤー(どちらもオフスクリーン・サーフェスです)を使用することは可能ですが、 アイテムを使って、それらにシェーダーエフェクトを適用することはできません。これは、OpenVG には頂点ごとやフラグメントごとのシェーダ操作を適用するための API がないためです。しかし、OpenVG API の Image Filter 操作を利用することで、ShaderEffects がカスタムアイテムで提供するものと同様の効果を得ることができるかもしれません。OpenVG のカスタムレンダリングを統合するには、 と組み合わせて を使用します。ShaderEffectSource ShaderEffect QSGRendererInterface QSGRenderNode

パーティクルエフェクト

パーティクル効果を OpenVG でレンダリングすることはできません。可能な限り、パーティクルをシーンから完全に削除してください。そうしないと、パーティクルが見えなくても、何らかの処理が必要になります。

テキストのレンダリング

OpenVG アダプテーションでのテキストレンダリングは、グリフパスのレンダリングに基づいており、OpenGL バックエンドとは異なり、距離フィールドのテクニックは使用しません。

遠近変換

OpenVG API では、パスを非アフィン変換で変換することはできませんが、Qt Quick を使えば可能です。一貫して、パースペクティブ変換を適用しながら、矩形やテキストなどのパスを使用してコンポーネントをレンダリングする場合、OpenVG バックエンドは、変換を適用する前に、まず VGImage にレンダリングします。この動作は、実行時に多くのメモリを使用し、時間がかかります。

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