IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Le composant QML ShaderEffectItem et QGraphicsView
Il est maintenant possible d'intégrer des shaders dans une interface Qt Quick

Le , par Michel Rotta

67PARTAGES

1  0 
Pour ceux qui ne savent pas encore ce qu'est ShaderEffectItem, vous pouvez consulter The convenient power of QML Scene Graph.

QML2 en surcouche du QML Scene Graph offre une API agréable pour combiner du code shader en GL/GLES avec QML. L'API consiste en deux nouveau éléments QML : ShaderEffectItem et ShaderEffectSource. Avec cette API, il est simple de créer des effets et des animation qui ne pourraient être réalisées en utilisant les élément standard de QML 1. Ceci permet aussi naturellement aux effets de faire leur traitement lourd sur le GPU et ainsi d'améliorer les performances et donc de permettre des effets qui ne pourraient fonctionner correctement sans une accélération matérielle.

L'implémentation de ShaderEffectItem ne dépend pas fondamentalement du QML Scene Graph et nous avons implémenté un plug-in QML Extension qui fourni une API similaire pour QGraphicsView, basé sur Qt Quick 1. La vidéo ci dessous vous montre une application écrite avec Qt Quick 1.0 fonctionnant sur N8, montrant quelques effets utilisant le plug-in "shaders". Elle montre aussi la même application tournant sur cinq plateforme différentes : Symbian^3, Maemo 5, Mac OS X, Windows 7 et Ubuntu.



Le code source de ce plug-in et l'application de démonstration sont disponible : https://qt.gitorious.org/qt-labs/qml...-shadersplugin. Des information plus détaillées sur les fonctions de l'API de ShaderEffectItem et ShaderEffectSource sont disponibles dans la documentation (dossier "doc". Une liste des dernière différences entre le plug-in et QML2 peut être trouvée dans le fichier readme.

Utiliser le plug-in "shaders" est simple :
  • compilez le plug-in (voir le fichier readme dans le dossier du code source pour des informations plus détaillées) ;
  • dans le code CPP de votre application, déclarez le viewport du QDeclarativeView en tant que QGLWidget. Rappelez-vous aussi de positionner le mode de mise à jour du viewport à "FullViewportUpdate" ;
  • importez le module "Qt.labs.shaders 1.0" dans votre code QML.


Le plug-in est complètement fonctionnel et peut aussi être utilisé, mais il reste "work in progress" ; ainsi, l'API peut changer. L'objectif est de rester au plus près de l'API de QML2 durant ses évolutions pour conserver le plug-in aussi compatible que possible.

Cette fonctionnalité requiert OpenGL ou OpenGL ES 2.0 et dépend du module QtOpenGl. Ainsi, le fonctionnement est limité uniquement aux plateformes qui ont au moins la dernière version majeure de Qt (4.7) et le support de QtOpenGL, comme Windows, Linux, Mac et les appareilles mobiles fonctionnant sous Symbian^3 (expérimental depuis la 4.7.4) ou Maemo5, en supposant que Qt a été mis à jour à la version 4.7.x. Sur Maemo 5, il suffit d'avoir le firmware PR1.3.

Actuellement le backend de gestion des ressources OpenGL ES 2.0 backend sur Symbian n'est pas complet, mais nous allons améliorer cela dans Qt 4.7.4. Jusque là, il n'est pas recommandé d'utiliser cette fonctionnalité dans le développement d'applications pour Symbian. Toutefois, l'expérimentation et la et les retours sont encouragée !

Une erreur dans cette actualité ? Signalez-nous-la !