このページでは

QCanvasCustomBrush Class

QCanvasCustomBrushはカスタムシェーダを持つブラシです。詳細...

ヘッダー #include <QCanvasCustomBrush>
CMake: find_package(Qt6 REQUIRED COMPONENTS CanvasPainter)
target_link_libraries(mytarget PRIVATE Qt6::CanvasPainter)
以来:Qt 6.11
を継承しています: QCanvasBrush
ステータス技術プレビュー

パブリック関数

QCanvasCustomBrush()
QCanvasCustomBrush(const QString &fragmentShader, const QString &vertexShader = {})
~QCanvasCustomBrush()
void setData1(const QVector4D &data)
void setData2(const QVector4D &data)
void setData3(const QVector4D &data)
void setData4(const QVector4D &data)
void setFragmentShader(const QShader &fragmentShader)
void setFragmentShader(const QString &fragmentShader)
void setTimeRunning(bool running)
void setVertexShader(const QShader &vertexShader)
void setVertexShader(const QString &vertexShader)
bool timeRunning() const
operator QVariant() const
bool operator!=(const QCanvasCustomBrush &lhs, const QCanvasCustomBrush &rhs)
bool operator==(const QCanvasCustomBrush &lhs, const QCanvasCustomBrush &rhs)

詳細説明

QCanvasCustomBrush は、カスタム頂点シェーダおよび/またはカスタムフラグメントシェーダを持つストローク/塗りつぶしブラシです。

これらのシェーダは、Qt Quick ShaderEffect シェーダと同様に、Vulkan スタイルの GLSL で記述されることが期待されます。これらのシェーダは、"customfrag.glsl" または"customvert.glsl" のいずれかで、常にQC_INCLUDE ステートメントを含んでいなければなりません。これにより、ユニフォームブロック、画像およびフォントテクスチャ、およびいくつかのヘルパー関数が利用可能になります。

以下はカスタムフラグメントシェーダの簡単な例です:

#version 440

QC_INCLUDE "customfrag.glsl"

void main()
{
    float a = 0.6 + 0.2 * sin(0.1 * fragCoord.x + 4.0 * iTime);
    vec4 color = vec4(a, a, a, 1.0);
    fragColor = sdfFontAlpha() * globalAlpha * color;
    applyColorEffects(fragColor);
}

iTime は、組み込みのユニフォームブロックでよく使われるメンバの例です。truesetTimeRunning() を呼び出すと、この値がフレームごとに自動的に更新され、アニメーションコンテンツを駆動するために使用できます。

QCanvasCustomBrush で使用されるシェーダは、Qt Canvas Painter パッケージが提供するqc_add_shaders() CMake 関数を使用してアプリケーション プロジェクトに追加する必要があります。この関数は、内部的に標準のqt_add_shaders() を呼び出す前に、ビルド時に追加の前処理を行います。

例えば、次のようになります:

qc_add_shaders(app "app_custombrush_shaders"
    PREFIX
        "/shaders"
    FILES
        brush1.frag
)

実行時には、生成された.qsb ファイルを次のように使用できます:

QCanvasCustomBrush customBrush(":/shaders/brush1.frag.qsb"));
customBrush.setTimeRunning(true); // iTime updates automatically
// expose custom data to the shader in data1
customBrush.setData1(QVector4D(1.0, 2.0, 3.0, 4.0));

QCanvasCustomBrush を塗りつぶしなどに使用できます:

painter->setFillStyle(customBrush);

Qt Canvas Painter - ギャラリーの例」も参照してください

メンバ関数のドキュメント

QCanvasCustomBrush::QCanvasCustomBrush()

デフォルトのカスタムブラシを作成します。

QCanvasCustomBrush::QCanvasCustomBrush(const QString &fragmentShader, const QString &vertexShader = {})

カスタムブラシを構築します。

フラグメントシェーダはfragmentShader で、バーテックスシェーダはvertexShader です。このコンストラクタは 2 つのファイル名を取ります。どちらのファイルも.qsb ファイルであることが期待され、QShader オブジェクトに読み込まれてデシリアライズされます。ファイルはローカルファイルでも、Qt Resource System を介してアプリケーションに埋め込んでもかまいません。

指定しない場合、vertexShader のデフォルトは空文字列です。これは、デフォルトの標準シェーダーが頂点ステージに使用されることを意味します。fragmentShader として空文字列を渡し、vertexShader に対してのみカスタム・シェーダを提供することも可能です。

setFragmentShader およびsetVertexShaderも参照してください

[noexcept] QCanvasCustomBrush::~QCanvasCustomBrush()

カスタムブラシを破壊する。

void QCanvasCustomBrush::setData1(const QVector4D &data)

一様データ1 の値をdata に設定します。 これにより、カスタムデータをシェーダに設定できます。

void QCanvasCustomBrush::setData2(const QVector4D &data)

一様データ2 の値をdata に設定します。 これにより、カスタムデータをシェーダに設定できます。

void QCanvasCustomBrush::setData3(const QVector4D &data)

一様データ3 の値をdata に設定します。 これにより、カスタムデータをシェーダに設定できます。

void QCanvasCustomBrush::setData4(const QVector4D &data)

ユニフォームデータ4 の値をdata に設定します。 これにより、カスタムデータをシェーダに設定することができます。

void QCanvasCustomBrush::setFragmentShader(const QShader &fragmentShader)

fragmentShader を使用するカスタムブラシを設定します。

void QCanvasCustomBrush::setFragmentShader(const QString &fragmentShader)

fragmentShader を使用するカスタムブラシを設定します。これは有効なqsbファイルへのパスでなければなりません。このファイルはローカルファイルでも、The Qt Resource Systemを介してアプリケーションに埋め込んでもかまいません。

void QCanvasCustomBrush::setTimeRunning(bool running)

time running state をrunning に設定します。これが true の場合、シェーダのユニフォームiTime が自動的に更新され、シェーダで現在のアニメーションの実行時間を取得するために使用できます。

デフォルト値はfalse です。

timeRunning()も参照してください

void QCanvasCustomBrush::setVertexShader(const QShader &vertexShader)

vertexShader を使用するカスタムブラシを設定します。

void QCanvasCustomBrush::setVertexShader(const QString &vertexShader)

vertexShader を使用するカスタムブラシを設定します。これは有効なqsbファイルへのパスでなければなりません。このファイルはローカルファイルでも、The Qt Resource Systemを介してアプリケーションに埋め込んでもかまいません。

bool QCanvasCustomBrush::timeRunning() const

時刻が動いていれば真を返す。

setTimeRunning()も参照

QCanvasCustomBrush::operator QVariant() const

カスタムブラシをQVariant として返す。

関連 非会員

[noexcept] bool operator!=(const QCanvasCustomBrush &lhs, const QCanvasCustomBrush &rhs)

カスタムブラシlhsrhs と異なる場合はtrue を返し、そうでない場合はfalse を返す。

operator==()も参照

[noexcept] bool operator==(const QCanvasCustomBrush &lhs, const QCanvasCustomBrush &rhs)

カスタムブラシlhsrhs と等しければtrue を返し、そうでなければfalse を返す。

operator!=()も参照

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