qt_add_custom_brush_shaders
カスタムブラシシェーダーを準備し、Qtリソースシステムに追加します
このコマンドは、Qt6 パッケージのCanvasPainter コンポーネントに定義されており、次のように読み込むことができます:
find_package(Qt6 REQUIRED COMPONENTS CanvasPainter)このコマンドは Qt 6.12 で導入されました。
概要
qt_add_custom_brush_shaders(target resource_name
FILES file1 [file2 ...]
[PREFIX resource_path]
[BASE base_path]
[OUTPUTS output1 [output2 ...]]
[DEFINES "name1=value1;name2=value2"]
[OUTPUT_TARGETS out_targets_var]
)バージョン指定なしのコマンドが無効になっている場合は、代わりに `qt6_add_custom_brush_shaders() ` を使用してください。このコマンドと同じ引数セットをサポートしています。
説明
qt_add_custom_brush_shaders を使用する場合、ビルドシステムは自動的に Qt Canvas Painter による前処理ステップを実行した後、qsbツールを呼び出し、その結果生成された.qsb ファイルがリソースシステムに暗黙的に追加されます。実行時、アプリケーションは Qt リソースシステムを介して生成された.qsb ファイルにアクセスし、そのパスをQCanvasCustomBrush に渡します。
例
brush1.frag でフラグメントシェーダーが実装されたカスタムブラシを使用してレンダリングを行うアプリケーションがあると仮定します。QCanvasCustomBrush はbrush1.frag.qsb を参照しています。この.qsb ファイルがビルド時に確実に生成されるようにするには、次のようにします。
find_package(Qt6 REQUIRED COMPONENTS CanvasPainter)
qt_add_executable(exampleapp
main.cpp
)
qt_add_custom_brush_shaders(exampleapp "exampleapp_custombrush_shaders"
PREFIX
"/shaders"
FILES
brush1.frag
)上記の手順で、アプリケーションが実行時に:/shaders/brush1.frag.qsb にアクセスできるようになります:
QCanvasCustomBrush customBrush(":/shaders/brush1.frag.qsb");元のVulkanスタイルのGLSLソースコード(brush1.frag )は、アプリケーションの実行ファイルには含まれておらず、同梱する必要もありません。シェーダーコードにエラーがある場合、ビルド時にコンパイラのメッセージが表示され、ビルドは失敗します。 シェーダーソースファイルを変更すると、C++ やその他のソースファイルと同様に、次のビルドで変更内容が自動的に反映されます。
qt_add_shaders との関係
qt_add_custom_brush_shaders は、QCanvasCustomBrush と共に使用されるシェーダー専用です。これは、ビルド時に追加の前処理を実行した後、内部でQt XMLの Shader Toolsモジュールから標準のqt_add_shaders()を呼び出します。
注:カスタムブラシ用のシェーダーには 、必ず `QC_INCLUDE ` ステートメント(`"customfrag.glsl" ` または `"customvert.glsl"` を使用)を含める必要があり、qt_add_custom_brush_shaders を通じてプロジェクトに追加する必要があります。標準の `qt_add_shaders ` 関数は、Qt Canvas Painter 固有の前処理を行わないため、カスタムブラシのシェーダーには適していません。
Qt XML におけるクロスプラットフォームのシェーダーコードの取り扱いに関する一般的な概念についてはqt_add_shaders() を、カスタムブラシシェーダーの作成に関する詳細についてはQCanvasCustomBrush を参照してください。
ターゲット言語
qt_add_custom_brush_shaders は、シェーダーコードを、Qt Canvas Painter がサポートするグラフィックス API に適した、固定のターゲットセットに変換します:
- SPIR-V (Vulkan用)
- GLSL
300 es(OpenGL ES 3.0 以降用) - GLSL
150(OpenGL 3.2 以降向け) - GLSL
130(OpenGL 3.0用、主に旧式のソフトウェアOpenGLラスタライザをサポートするため) - HLSL
5.0(Direct 3D 用) - MSL
1.2(Metal用)
qt_add_shaders() とは異なり、現在、対象となる言語やバージョンのセットについて、これ以上の設定は提供されていません。
引数
シェーダーのタイプはファイル拡張子から推測されます。フラグメントシェーダーの場合は.frag 、頂点シェーダーの場合は.vert である必要があります。
最初の 2 つの引数は位置引数です。target は、生成されたリソースが追加されるターゲットであり、resource_name は生成されたリソースの名前です。この名前は、プロジェクト内の各qt_add_custom_brush_shaders 呼び出しで一意である必要があります。
注: 最初の引数として渡されるtarget は 、qt_add_custom_brush_shaders が呼び出される前に存在している必要があります。
注: qt_add_custom_brush_shaders の呼び出しは複数回 行えますが、それぞれで一意のresource_name を使用する必要があります。
残りの引数はキーワードベースです:
FILES- コンパイルするシェーダーソースファイル(.fragまたは.vert)のリスト。このキーワードは必須です。PREFIX- 生成された `.qsb` ファイルがリソースシステム内で利用可能になるリソースパスプレフィックス。BASE- 生成されたリソースエイリアスから削除されるベースパス。これは、qt_add_resourcesのBASE引数と同様です。OUTPUTS- 生成される.qsbファイルの名前をソースとは異なるものにする必要がある場合、このリストにはFILESの各項目に対応するエントリを含め、出力ファイル名を指定することができます。これは通常、1つのシェーダーソースが、DEFINESによって異なる複数の.qsbファイルの入力として使用される場合に利用されます。DEFINES- シェーダーのコンパイル中に有効となるマクロを定義します。リストの形式は"name1=value1;name2=value2"となります。OUTPUT_TARGETS- 静的ライブラリでqt_add_custom_brush_shadersを使用する場合、1 つ以上の特別なターゲットが生成されます。ここで変数名を指定することで、これらのターゲットを取得できます(例えば、それらに対して追加の処理を実行する場合など)。
QCanvasCustomBrush およびqt_add_shaders()も参照してください 。
© 2026 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.