On m’a demandé récemment quel pouvait être l’avenir de DirectX et plus précisément de Direct3D alors que WPF approche et permet aussi un affichage 3D. Lorsque j’ai travaillé pour la première fois sur WPF je me suis moi aussi demandé comment ces deux modèles de programmation pouvaient se positionner l’un par rapport à l’autre. Voici mon point de vue sur la question qui au demeurant n’engage absolument que moi.
Pour commencer WPF utilise Direct3D. Se travail est effectué dans Milcore.dll (cf. le diagramme attaché à ce post représentant les différentes ‘couches’ de WPF).
Certains programmeurs préfèreront faire de la 3D en utilisant uniquement le modèle de programmation exposé par PresentationFramework.dll et PresentationCore.dll mais il est probable qu’un grand nombre continueront à utiliser le SDK DirectX (donc la boite appelé D3D du schémas attaché) pour leurs besoins d’affichage 3D pour les raisons suivantes (encore une fois il ne s’agit que d’une opinion personnelle):
· Ces développeurs souhaitent généralement avoir un accès le plus complet possible au matériel et aux dernières fonctionnalités graphique. Pour l’instant le SDK DirectX est le modèle de programmation qui permet cela. WPF est basé sur une ultime déclinaison de DX9 et nous aurons en même temps la sortie de DX10.
· Le modèle de programmation de WPF promeut une séparation forte entre la spécification de ce que l’on souhaite voir à l’écran et la façon dont tous cela va être afficher (la façon dont on va le communiquer à la carte graphique) hors la pluparts des applications 3D ont besoin du maximum de performance et souhaitent pouvoir contrôler en même temps ce qui va être affiché et comment cela va être affiché.
· Un contrôle activeX ou un contrôle winform utilisant DX pour l’affichage devrait pouvoir s’insérer facilement dans une application WPF. Et c’est très certainement là voie qui sera choisie pour les applications ayant une vue faisant un usage intensif de la 3D.
· Enfin et c’est malheureusement le point que je trouve le plus limitant aujourd’hui avec les fonctionnalités 3D exposée par WPF, il n’y a à ma connaissance pas de possibilité d’utiliser aujourd’hui des shaders hors c’est devenu très utile pour une multitude d’usages.
Pour résumer, WPF et DX utilise DX (plus spécifiquement D3D) pour gérer l’affichage. Le SDK DirectX permet d’y accéder plus directement, il continuera certainement d’exister longtemps pour ceux qui auront besoin de continuer à accéder aux hardware graphique avec une API de bas niveau.
Il est aussi possible que d’ici quelques années les fonctionnalités exposées par Milcore.dll changent suffisamment peu d’une version à une autre pour devenir un troisième choix entre WPF (très haut niveau) et DirectX (très bas car colle au hardware) mais c’est pas sûr.
En fait DirectX va reste à mon sens le choix de prédilection pour ceux qui auront des besoins d’affichage 3D un peu plus intensif ou spécifique à leur application que les autres.
Donc en fait je vois l’avenir de DirectX plutôt brillant. J
Vu que le desktop entier de Vista va même reposer dessus on peut même être assurer qu’un surcroit d’efforts (si tenté que cela soit possible) va lui être consacré.
Le blog de Greg Schechter's (en anglais) donne des informations très intéressantes concernant WPF, DirectX et le nouveau modèle de driver WDDM : http://blogs.msdn.com/greg_schechter/default.aspx
Bonne journée et bonne semaine,