QCanvasCustomBrush Class
QCanvasCustomBrush est une brosse avec des shaders personnalisés. Plus d'informations...
| En-tête : | #include <QCanvasCustomBrush> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS CanvasPainter)target_link_libraries(mytarget PRIVATE Qt6::CanvasPainter) |
| Depuis : | Qt 6.11 |
| Hérite : | QCanvasBrush |
| Statut : | Technical Preview |
Fonctions publiques
| 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 |
Non-membres apparentés
| bool | operator!=(const QCanvasCustomBrush &lhs, const QCanvasCustomBrush &rhs) |
| bool | operator==(const QCanvasCustomBrush &lhs, const QCanvasCustomBrush &rhs) |
Description détaillée
QCanvasCustomBrush est un pinceau de trait/remplissage avec des shaders de vertex et/ou de fragment personnalisés.
Ces shaders sont censés être écrits en GLSL de style Vulkan, de la même manière que les shaders Qt Quick ShaderEffect . Ils doivent toujours contenir une déclaration QC_INCLUDE, soit avec "customfrag.glsl" ou "customvert.glsl". Cela rend disponible un bloc uniforme, l'image et les textures de police, et quelques fonctions d'aide.
Vous trouverez ci-dessous un exemple simple de nuanceur de fragment personnalisé :
#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 est un exemple de membre couramment utilisé dans le bloc d'uniformes intégré. En appelant setTimeRunning() avec true, cette valeur sera automatiquement mise à jour à chaque image, et peut être utilisée pour piloter du contenu animé.
Les shaders qui sont utilisés avec QCanvasCustomBrush doivent toujours être ajoutés au projet d'application via la fonction CMake qc_add_shaders(), fournie par le paquetage Qt Canvas Painter. Cette fonction effectue un prétraitement supplémentaire au moment de la construction avant d'invoquer en interne la fonction standard qt_add_shaders().
Par exemple :
qc_add_shaders(app "app_custombrush_shaders" PREFIX "/shaders" FILES brush1.frag )
Au moment de l'exécution, le fichier .qsb généré peut être utilisé pour un exemple comme celui-ci :
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));
Le QCanvasCustomBrush peut alors être utilisé dans un remplissage, par exemple :
painter->setFillStyle(customBrush);
Voir aussi Qt Canvas Painter - Gallery Example.
Documentation des fonctions membres
QCanvasCustomBrush::QCanvasCustomBrush()
Construit une brosse personnalisée par défaut.
QCanvasCustomBrush::QCanvasCustomBrush(const QString &fragmentShader, const QString &vertexShader = {})
Construit une brosse personnalisée.
Le fragment shader est fragmentShader et le vertex shader est vertexShader. Ce constructeur prend deux noms de fichiers, où les deux fichiers sont censés être des fichiers .qsb qui sont lus et désérialisés en objets QShader. Les fichiers peuvent être des fichiers locaux ou intégrés dans l'application via le système de ressources Qt.
S'il n'est pas spécifié, vertexShader prend par défaut la forme d'une chaîne vide, ce qui implique que le shader standard par défaut est utilisé pour l'étape vertex. Il est également possible de passer une chaîne vide en tant que fragmentShader, et de ne fournir qu'un nuanceur personnalisé pour vertexShader.
Voir également setFragmentShader et setVertexShader.
[noexcept] QCanvasCustomBrush::~QCanvasCustomBrush()
Détruit la brosse personnalisée.
void QCanvasCustomBrush::setData1(const QVector4D &data)
Définit la valeur de la donnée uniforme 1 à data, ce qui permet de définir des données personnalisées dans les shaders.
void QCanvasCustomBrush::setData2(const QVector4D &data)
Définit la valeur uniforme data2 à data, ce qui permet de définir des données personnalisées dans les shaders.
void QCanvasCustomBrush::setData3(const QVector4D &data)
Définit la valeur des données uniformes3 à data, ce qui permet de définir des données personnalisées dans les shaders.
void QCanvasCustomBrush::setData4(const QVector4D &data)
Définit la valeur des données uniformes4 à data, ce qui permet de définir des données personnalisées dans les shaders.
void QCanvasCustomBrush::setFragmentShader(const QShader &fragmentShader)
Définit la brosse personnalisée à utiliser fragmentShader.
void QCanvasCustomBrush::setFragmentShader(const QString &fragmentShader)
Définit la brosse personnalisée à utiliser fragmentShader. Il doit s'agir du chemin d'accès à un fichier qsb valide. Le fichier peut être un fichier local ou intégré dans l'application via le système de ressources Qt.
void QCanvasCustomBrush::setTimeRunning(bool running)
Définit l'état du temps de fonctionnement à running. Lorsque cette valeur est vraie, l'uniforme du shader iTime est mis à jour automatiquement, et peut être utilisé pour obtenir le temps de fonctionnement actuel de l'animation dans le shader.
La valeur par défaut est false.
Voir également timeRunning().
void QCanvasCustomBrush::setVertexShader(const QShader &vertexShader)
Définit la brosse personnalisée à utiliser vertexShader.
void QCanvasCustomBrush::setVertexShader(const QString &vertexShader)
Définit la brosse personnalisée à utiliser vertexShader. Il doit s'agir du chemin d'accès à un fichier qsb valide. Le fichier peut être un fichier local ou intégré dans l'application via le système de ressources Qt.
bool QCanvasCustomBrush::timeRunning() const
Retourne vrai si le temps est en cours d'exécution.
Voir aussi setTimeRunning().
QCanvasCustomBrush::operator QVariant() const
Renvoie la brosse personnalisée sous forme de QVariant.
Non-membres associés
[noexcept] bool operator!=(const QCanvasCustomBrush &lhs, const QCanvasCustomBrush &rhs)
Renvoie true si la brosse personnalisée lhs est différente de rhs; false sinon.
Voir aussi operator==().
[noexcept] bool operator==(const QCanvasCustomBrush &lhs, const QCanvasCustomBrush &rhs)
Renvoie true si la brosse personnalisée lhs est égale à rhs; false sinon.
Voir aussi 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.