グラフィックス
クロスプラットフォームのアプリケーションでは、Qt を使用してグラフィカル要素を表示できます。Qt は、開発者がアプリケーションコードに集中できるように、プラットフォームの基礎となるグラフィックス API を抽象化します。
Qt Rendering Hardware Interface (RHI) は、Qt アプリケーションからの 3D グラフィックスの呼び出しを、ターゲットプラットフォームで利用可能なグラフィックス API に変換します。
サポートされているグラフィックスAPIは以下の通りです:
- OpenGL (バージョン 2.1 以上)
- OpenGL ES(バージョン 2.0 以上)
- Vulkan (バージョン 1.0 以上)
- Direct3D 11(バージョン11.1以上)
- Direct3D 12(バージョン12.0以降)
- Metal (バージョン 1.2 以上)
Qt Quick のグラフィックス
Qt Quick アプリケーションでは、レンダリングにシーングラフを使用します。シーングラフ・レンダラは、効率的なグラフィックス・コールを作成し、パフォーマンスを向上させることができます。シーングラフにはアクセス可能な API があり、複雑でも高速なグラフィックを柔軟に作成できます。
Qt Quick アプリケーションのレンダリングについては、以下のページを参照してください。
- Qt Quick シーングラフ
- シーングラフとレンダリング
- Qt Quick Scene Graph デフォルトのレンダラ
- QRhi ベースとネイティブ 3D レンダリングによるシーングラフの拡張- アプリケーションが提供するグラフィックスコマンド(OpenGL、Vulkan、Direct3D など)を Qt Quick シーングラフに統合する方法。
レンダリングパスの選択
Qt は可能な限りターゲットプラットフォームのグラフィックス API を使用しますが、特定の API を使用して Qt のレンダリングパスを設定することも可能です。多くの場合、特定の API を選択することでパフォーマンスを向上させることができ、開発者は特定のグラフィックス API を持つプラットフォームにデプロイすることができます。QQuickWindow でレンダリングパスを設定する方法については、Qt Rendering Hardware Interface によるレンダリングのページを参照してください。
Qt Quick 3D による 3D グラフィックス
Qt Quick 3Dは、Qt Quick ベースの 3D コンテンツや 3D ユーザーインターフェースを作成するためのハイレベル API を提供するアドオンです。Qt Quick Scene Graphsを拡張し、Qt Quick の 2D アプリケーションに 3D コンテンツを実装することができます。
シェーダーエフェクト
Qt Shader Toolsは、頂点シェーダとフラグメントシェーダを Qt Quick インターフェース用のパッケージに変換するツールQSB を提供します。特に、ShaderEffect QML タイプとQSGMaterial サブクラスは、QSB の出力を使用できます。Qt Quick 3Dには、3D シーンにシェーダーをインポートするための独自のフレームワークがあります。
以下のリストには、シェーダー効果に関する情報が含まれています。
- Qt シェーダーツール
- プログラム可能なマテリアル、エフェクト、ジオメトリ、テクスチャデータ- Qt Quick 3D のマテリアルとシェーダ
Qt GUI によるハイレベルグラフィックス
Qt GUI は、高レベルのウィンドウ、ペイント、タイポグラフィシステムを提供します。QPainter は、QImage 、QOpenGLPaintDevice 、QWidget 、QPrinter のような異なるサーフェス、またはQPaintDevice インスタンスにベクターグラフィックス、テキスト、画像を描画するための API を提供します。Qt ウィジェットのユーザー・インターフェースでは、Qt はソフトウェア・レンダラを使用します。
以下のリストには、Qt GUI の高レベル描画 API に関する情報が含まれています。
Qt GUI による低レベルグラフィックス
Qt GUIは OpenGL コンテキストと Vulkan インスタンスを管理するためのクロスプラットフォームイネーブラを提供します。OpenGL、OpenGL ES、または Vulkan で直接レンダリングを行うアプリケーションは、QOpenGLContext 、QOpenGLFunctions 、QVulkanInstance 、QVulkanFunctions 、QVulkanDeviceFunctions を使用してコンテキストやインスタンスを管理し、OpenGL および Vulkan API 関数にポータブルな方法でアクセスできます。
Qt GUIは、Qt Quick シーングラフと Qt Quick 3D レンダリングエンジンを実装するために Qt 自身が使用しているポータブルでクロスプラットフォームな 3D レンダリングインフラストラクチャを使用してレンダリングを実行したいアプリケーションのために、QRhi やQShader などの Qt Rendering Hardware Interface (RHI) ファミリの API も提供しています。これらのクラスは、Qt Platform Abstractionクラスと同様に、当面の間、限定的な互換性を約束する "semi-public" API として提供されます。しかし、QRhi クラスには完全なドキュメントが付属しています。QRhi クラスを参照してください。
Qt GUIモジュール単体では、QRhi ベースのレンダリングで、QWindow や、QRhiTexture のようなオフスクリーンバッファをターゲットにすることができます。QWidget や QML (Qt Quick) ベースのユーザーインターフェイスでは、ネイティブプラットフ ォームに支えられたQWindow を使用するのが最も便利な方法とは限りません。このため、Qt WidgetsモジュールではQRhiWidget を提供し、Qt Quick ではQQuickRhiItem を提供しています。これらの基本クラスでは、QWidget またはQQuickItem のサブクラスを簡単に作成することができます。これらのサブクラスのインスタンスは、ポータブルなQRhi ベースのレンダリングを行い、Widgets または Qt Quick シーンに自動的に合成されるテクスチャに変換します。
Qt OpenGL モジュール
Qt OpenGLモジュールは、OpenGL アクセスを必要とするアプリケーションのためのものです。このモジュールは Qt 5 アプリケーションや Qt GUI との互換性を維持するためのものです。QWidget 、QOpenGLWidget 、OpenGLシーンを追加できるウィジェットです。
印刷
Qt は、ローカルまたはネットワーク上の実際のプリンタへの直接印刷と、PDF 出力の両方をサポートしています。Qtで印刷を行う方法は、Qt Print Supportのページで詳しく説明されています。
画像
Qt では、QImage クラスを通して、画像の読み書きをサポートしています。さらに、画像の読み込みや保存をより細かく制御するには、それぞれQImageReader とQImageWriter クラスを使用します。Qt が提供する画像フォーマット以外の画像フォーマットのサポートを追加するには、QImageIOHandler とQImageIOPlugin を使って画像フォーマットのプラグインを作成します。
詳しくは画像ファイルの読み書きのページを参照してください。
©2024 The Qt Company Ltd. 本書に含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。