グラフィックス

クロスプラットフォームのアプリケーションでは、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 は可能な限りターゲットプラットフォームのグラフィックス 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 Graphを拡張し、2D Qt Quick アプリケーションに 3D コンテンツを実装することができます。

シェーダーエフェクト

Qt Shader Toolsは、頂点シェーダとフラグメントシェーダを Qt Quick インターフェース用のパッケージに変換するツールQSB を提供します。特に、ShaderEffect QML タイプとQSGMaterial サブクラスは、QSB の出力を使用できます。Qt Quick 3Dには、3D シーンにシェーダーをインポートするための独自のフレームワークがあります。

以下のリストには、シェーダー効果に関する情報が含まれています。

Qt GUI によるハイレベルなグラフィックス

Qt GUI は、高レベルのウィンドウ、ペイント、タイポグラフィシステムを提供します。QPainter は、QImageQOpenGLPaintDeviceQWidgetQPrinter などの異なるサーフェス、またはQPaintDevice インスタンスに、ベクターグラフィックス、テキスト、画像を描画するための API を提供します。Qt ウィジェットのユーザー・インターフェースでは、Qt はソフトウェア・レンダラを使用します。

以下のリストには、Qt GUI の高レベル描画 API に関する情報が含まれています。

Qt GUI による低レベルグラフィックス

Qt GUIは OpenGL コンテキストと Vulkan インスタンスを管理するためのクロスプラットフォームイネーブラを提供します。OpenGL、OpenGL ES、または Vulkan で直接レンダリングを行うアプリケーションは、QOpenGLContextQOpenGLFunctionsQVulkanInstanceQVulkanFunctionsQVulkanDeviceFunctions を使用してコンテキストやインスタンスを管理し、OpenGL および Vulkan API 関数にポータブルな方法でアクセスできます。

Qt GUIは、Qt Quick シーングラフと Qt Quick 3D レンダリングエンジンを実装するために Qt 自身が使用している、ポータブルでクロスプラットフォームな 3D レンダリングインフラストラクチャを使用してレンダリングを実行したいアプリケーションのために、QRhiQShader などの Qt Rendering Hardware Interface (RHI) ファミリの API も提供しています。これらのクラスは、Qt Platform Abstractionクラスと同様に、当面は限定的な互換性が約束された「セミパブリック」 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 との互換性を維持するためのものです。QWidgetQOpenGLWidget 、OpenGLシーンを追加できるウィジェットです。

印刷

Qtは、ローカルまたはネットワーク上の実際のプリンタへの直接印刷と、PDF出力の両方をサポートしています。Qtで印刷を行う方法は、Qt Print Supportのページで詳しく説明されています。

画像

Qt では、QImage クラスを通して、画像の読み書きをサポートしています。さらに、画像の読み込みや保存をより細かく制御するには、それぞれQImageReaderQImageWriter クラスを使用します。Qt が提供する以外の画像フォーマットのサポートを追加するには、QImageIOHandlerQImageIOPlugin を使って画像フォーマットのプラグインを作成します。

詳しくは画像ファイルの読み書きのページを参照してください。

©2024 The Qt Company Ltd. 本書に含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。