2009-11-18 7 views
3

J'ai implémenté un traceur en utilisant wxGraphicsContext. Le développement a été fait en utilisant wxGTK, et les graphismes étaient très rapides.wxGraphicsContext terriblement lent sur Windows

Ensuite, je suis passé à Windows (XP) en utilisant wxWidgets 2.9.0. Et le même code est extrêmement lent. Il faut environ 350 ms pour rendre une image. Puisque l'utilisateur est capable de faire glisser le traceur avec la souris pour naviguer, il se sent très lent avec un tel taux de mise à jour lente.

J'ai essayé d'implémenter certaines parties en utilisant wxDC et ai comparé la différence. Avec wxDC, le code est environ 100 fois plus rapide. Dans la mesure où je sais que Cairo et GDI + sont tous deux implémentés dans des logiciels, il n'y a pas de raison pour que Cairo soit plus rapide que GDI +.

Est-ce que je fais quelque chose de mal? Ou la mise en œuvre de GDI + n'est-elle pas à la hauteur de celle du Caire?

Une petite note: Je rends maintenant un wxBitmap, avec le wxGraphicsContext créé à partir d'un wxMemoryDC. C'est pour éviter le scintillement sur XP, car la double mise en mémoire tampon ne fonctionne pas.

+0

Les appels au Caire sont quand même routés via le GDI sur les fenêtres. Donc le problème est ailleurs ... – arul

Répondre

0

Extrait du cairo homepage:

Le Caire est conçu pour produire une sortie cohérente sur tous les supports de sortie tout en profitant de l'affichage accélération matérielle lorsqu'ils sont disponibles (par exemple, par l'extension X Renderer.).

Questions connexes