Qt Quick 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 にレンダリングします。この動作は実行時に多くのメモリを使用し、時間がかかります。

この動作は、実行時に多くのメモリを使用し、時間がかかります。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。