Guillaume Randon's WebLog

WPF 3D & DirectX 10

Récement j'ai pu avoir un peu plus de temps pour expérimenter avec WPF 3D et DirectX 10. L'exemple de code attaché à ce post montre:

  • Comment utiliser DirectX 10 au sein d'une applicaiton WPF 3D par le biais de HwndHost.
  • Comment utiliser la fonctionnalité de StreamOut de DirectX 10 pour faire calculer la géométrie à afficher par la carte graphique elle même.
  • Puis comment il est alors possible de récupérer le résultat de ce calcul en mémoire système pour éventuellement l'utiliser à d'autre fin que de l'afficher. Dans le cas présent l'exemple réutilise les valeurs pour créer et afficher la même géométrie en utilisant WPF 3D.
  • Enfin ce petit programme utilise le système de query directX 10 pour intéroger la carte est lui demander si le Geometry Shader aurait éventuellement généré plus de primitives (dans notre cas des triangles) s'il avait eu plus de mémoire vidéo.

Je décris cet exemple de code plus en profondeur dans une suite de petits articles à paraitre normalement dans la section DirectX du site msdn français. Si vous êtes intéressé vous pouvez vérifier s'ils ont ou non été mis en ligne sur celui-ci: http://www.microsoft.com/france/msdn/directx . Comme toujours je suis friand de remarques et de commentaires me permettant d'améliorer ces exemples de code aussi n'hésitez pas à m'écrire à l'adresse suivante guillara@microsoft.com

Bonne journée et bonne semaine à tous

Une petite image quand même pour finir:

The sample attached to this post shows:

  • How to use DirectX 10 for display from within a WPF application using HwndHost and C++/CLI.
  • How to use the D3D10 stream out functionnalities to generate completely a geometry on your card and then get back that geometry for any other use. Here the information we get back from the card are used to generate the same geometry using classes from WPF 3D.
  • Also in the code there is a very limited usage of D3D10 queries to discover whether the geometry shader would have outputted more primitives if there was more video memory or not.

As usual I like to get feedbacks that might help me to improve this kind of code samples, so please feel free to contact me at guillara@microsoft.com

Published Monday, July 23, 2007 8:27 AM by Guillaume Randon
Attachment(s): Pad-P1.zip

Comments

 

F??bio Pedrosa » WPF with DirectX 10 said:

July 26, 2007 12:31 AM
 

Whirly said:

En tant que développeur de jeux une question récurrente à l'heure actuelle serait de savoir s'il était envisageable de faire une intégration directx / wpf dans le cadre d'un jeu. J'ai commencé des recherches préliminaires dans ce sens et il semble que c'est découragé à droite et à gauche sans jamais avoir un argument massu qui va avec.

Si vous avez une opinion là dessus je suis preneur.

August 11, 2007 4:54 PM
 

Guillaume Randon said:

Bonjour,

Tout dépend de ce que l'on entend par intégration directx / wpf. Par ailleurs je pense que cela peut dépendre du type de jeu envisagé. Dans l'exemple dont il est question dans ce post, un device DX10 coexiste dans le même processus que le device DX9 utilisé pour le rendu des éléments WPF. Cela peut avoir deux effets de bord. D'abord lorsque vous utilisez PIX pour profiler votre application vous allez mesurer à la fois l'activité liée au device DX9 utilisé par WPF et l'activité liée au device DX10. Cela peut compliquer l'analyse ou forcer à avoir une maquette avec uniquement le rendu lié au device DX10 pour mesurer l'activité de cette partie là indépendamment du reste de l'application.

Par ailleurs une autre conséquence est que vous allez avoir au minimum deux threads qui communiquent avec la carte (l'une par le biais du device DX9) l'autre par le biais du device DX10. Pour obtenir les meilleures performances possibles il est généralement suggéré de n'avoir qu'un seul et même thread en charge des appels à DirectX (même si cela peut devenir moins important dans le futur). Donc pour obtenir des performances maximum pour certain type de jeu peut-être que mélanger WPF et DirectX 10 peut rendre le choses plus compliqués voire affecter les performances obtenues.

Maintenant à mon sens l'intégration de WPF et DirectX 10 peut rester intéressante dans un grand nombre de cas de figure. Cela reste toutefois un avis personnel :).

Bonne journée,

August 15, 2007 7:24 PM
Anonymous comments are disabled

© 2009 Microsoft Corporation. All rights reserved. Terms of Use  |  Trademarks  |  Privacy Statement
Microsoft
Page view tracker