2010-10-27 8 views
1

Je me demande si quelqu'un peut vous aider ou a eu un problème similaire. J'essaie de faire un jeu de base dans WP7 en utilisant Silverlight et je ne peux pas obtenir l'accélération du GPU.Windows Phone 7 - L'accélération GPU ne fonctionne pas

Les compteurs de fréquence d'images sont visibles ce qui indiquerait que le GPU est utilisé, les versions DirectX sont 10 et DirectX versions de pilote est WDDM 1.1.

J'ai essayé de réduire le code de retour à quelque chose de simple comme:

<Canvas x:Name="LayoutRoot" CacheMode="BitmapCache"> 
    <Rectangle x:Name="test" Fill="Green" Width="100" Height="100" Canvas.Left="50" Canvas.Top="200" CacheMode="BitmapCache" /> 
</Canvas> 

et le rectangle a toujours la teinte bleue lui indiquant qu'elle n'est pas accéléré GPU.

Des idées pourquoi ce peut être?

Merci pour votre temps

Répondre

2

Etes-vous sûr que vous avez eu raison?

Une autre excellente façon de voir ce qui est mis en cache visuellement consiste à utiliser l'indicateur EnableCacheVisualization mentionné plus haut. Encore une fois, ce n'est pas disponible dans la version de Public Preview, mais il sera disponible dans une future version.
Activer cette option ajoutera une teinte bleue et de la transparence sur chaque texture que nous transmettrons au GPU. Le résultat de cette visualisation est une carte de chaleur où les nuances de bleu les plus sombres correspondent à des textures multiples superposées les unes sur les autres. Cela vous permet de voir certains objets cachés qui pourraient ne pas être un contributeur évident au taux de remplissage lors de la première inspection. Plus la zone couverte par l'addition de chaque rectangle est grande, plus le nombre de pixels transmis au GPU augmente. Notez qu'en activant l'indicateur EnableCacheVisualization, le GPU effectue un travail supplémentaire et peut donc dégrader la fréquence d'images, en fonction du taux de remplissage actuel et du nombre de textures ombrées. Les compteurs de fréquence d'images n'indiqueront pas le taux de trame réel de l'application lorsque cet indicateur est utilisé. En outre, comme mentionné précédemment, le comportement de l'indicateur EnableCacheVisualization est différent sur Silverlight pour Windows Phone et Silverlight pour les autres plates-formes. Sur Windows Phone, les textures accélérées par le GPU sont teintées. Sur d'autres plateformes, les régions teintées présentent des textures qui ne sont pas accélérées par le GPU.

Pourquoi avez-vous ajouté CacheMode = "BitmapCache" à ces objets? Je voudrais ajouter ceci seulement à l'objet qui utilise l'animation basée sur des mises à jour de rappels. D'autres animations (animations storyboards) utilisent la mise en cache par défaut ainsi que ScrollViewer, Listbox etc.

+0

J'ai lu le contraire ici: http://msdn.microsoft.com/en-us/library/system.windows.interop.settings.enablecachevisualization%28VS.95%29.aspx "Obtient ou définit une valeur qui indique si utiliser un mode de visualisation d'analyse non-production, qui montre les zones d'une page qui ne sont pas accélérées par GPU avec une superposition colorée.Ne pas utiliser dans le code de production. ". A l'origine je déplaçais l'image manuellement sur l'écran donc je voulais la mettre en cache, je pensais juste essayer un peu plus simple de code pour voir ce qui n'allait pas .. – JeremyBeadle

+0

Mon erreur, tu as raison, c'est inversé dans WP7 "Coloré Les régions affichent les textures transmises au GPU pour l'accélération dans Silverlight pour Windows Phone.Dans le plug-in du navigateur Silverlight, les régions colorées affichent des textures qui ne sont pas accélérées par le GPU. »Doit juste être une mauvaise performance de l'émulateur :(Merci! – JeremyBeadle

-2

Je ne suis pas un expert, mais peut-être, vous devez utiliser XNA, pas Silverlight pour obtenir l'accélération GPU?

+0

Merci pour la réponse, pour autant que je sais que cela fonctionne aussi bien dans Silverlight que sur le bureau – JeremyBeadle

+0

J'ai aussi oublié de mentionner que c'est en utilisant le dernier émulateur, pas un appareil .. – JeremyBeadle

+3

Pourquoi répondre si vous ne connaissez pas la réponse? – Jay