WPF France

  • Augmenter la taille
  • Taille par défaut
  • Diminuer la taille

Améliorer les performances de D3DImage

Envoyer Imprimer PDF
Note des utilisateurs: / 0
MauvaisTrès bien 
Dans les exemples que l'on peut rencontrer sur le net, les abonnements sont généralement directement faits sur l'événement CompositorTarget.Rendering pour mettre à jour la scène 3D. Cela peut conduire à des problèmes de performances.


Par exemple dans l'application sur laquelle je travaille actuellement, le moteur de rendu WPF à un rafraichissement de 160 FPS. Cela signifie donc que la scène 3D est recalculée 160 fois par seconde : ouch !

La solution que je préconise pour améliorer les performances est de créer un timer indépendant qui utilisera le FPS que je désire. Disons par exemple 30 FPS.
public void createTheRenderingWithCorrectFPS(int whichFPS){
  DispatcherTimer _timer = new DispatcherTimer();
  _timer.Interval = new TimeSpan(1000 /whichFPS);
  _timer.Start();
  _timer.Tick += new EventHandler(_timer_Tick);
}

void _timer_Tick(object sender, EventArgs e)
{
     //Refresh the 3D scene
}

Cela permet à votre application d'être beaucoup plus réactive, surtout lorsque l'on a besoin d'être sur le Thread de l'UI pour mettre à jour la scène 3D.

(Article traduit de l'anglais depuis : http://blog.lexique-du-net.com )
Commentaires (0)
Mise à jour le Mardi, 23 Mars 2010 10:14  

Partagez


Article au hasard

  • On lit souvent sur le net que les DependencyObjects ne sont pas marqués comment étant sérializable et que c'est un inconvénient majeur dans leur utilisation au quotidien. Il existe cependant une façon facile de les sérializer.
    Commentaires (0)...
    Lire la suite...