Qt Quick Exemples - Effets d'ombrage
Un exemple Qt Quick démontrant l'utilisation des effets de shaders.

Cet exemple présente quelques effets visuels que vous pouvez réaliser avec les shaders dans Qt Quick. Il applique cinq effets différents à un texte et à quelques images. Pour plus d'informations, consultez la page Concepts importants à l'adresse Qt Quick. Graphical Effects
Exécution de l'exemple
Pour exécuter l'exemple à partir de Qt CreatorOuvrez le mode Welcome et sélectionnez l'exemple de Examples. Pour plus d'informations, voir Qt Creator: Tutoriel : Construire et exécuter.
Utilisation de ShaderEffect
Le type ShaderEffect opère généralement sur d'autres types, à l'aide d'un ShaderEffectSource:
ShaderEffectSource { id: theSource sourceItem: theItem }
Dans l'extrait ci-dessus, theItem est l'ID d'un objet QML complexe dans le fichier.
Les ShaderEffects peuvent utiliser ce ShaderEffectSource comme texture dans leur fragment shader :
fragmentShader: "content/shaders/wobble.frag.qsb"
Afin de prendre en charge plusieurs API graphiques, et pas seulement OpenGL, la source du shader n'est pas intégrée dans le QML. Le fichier référencé .qsb est un pack de shaders pré-généré contenant plusieurs variantes du code de shaders. Le shader approprié est ensuite choisi par Qt Quick au moment de l'exécution, en fonction de l'API graphique (Vulkan, Metal, Direct3D 11 ou OpenGL) utilisée au moment de l'exécution. Le fichier .qsb est généré hors ligne et est regroupé avec l'exécutable via le système de ressources Qt.
Vous pouvez utiliser n'importe quelle propriété personnalisée sur le site ShaderEffect dans votre shader. Cela rend le code des shaders animés très facile :
property variant source: theSource property real bend property real minimize property real side: genieSlider.value SequentialAnimation on bend { loops: Animation.Infinite NumberAnimation { to: 1; duration: 700; easing.type: Easing.InOutSine } PauseAnimation { duration: 1600 } NumberAnimation { to: 0; duration: 700; easing.type: Easing.InOutSine } PauseAnimation { duration: 1000 } } SequentialAnimation on minimize { loops: Animation.Infinite PauseAnimation { duration: 300 } NumberAnimation { to: 1; duration: 700; easing.type: Easing.InOutSine } PauseAnimation { duration: 1000 } NumberAnimation { to: 0; duration: 700; easing.type: Easing.InOutSine } PauseAnimation { duration: 1300 } }
Les ShaderEffects peuvent également avoir un vertext shader personnalisé. En définissant la propriété mesh sur ShaderEffect, vous disposez d'un plus grand nombre de vertices à manipuler, ce qui vous permet d'obtenir davantage d'effets.
mesh: Qt.size(10, 10) vertexShader: "content/shaders/genie.vert.qsb"
© 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.