Windows Phone 7 - ускорение графического процессора не работает - PullRequest
1 голос
/ 28 октября 2010

Мне интересно, может ли кто-нибудь помочь с этим или у него была похожая проблема.Я пытаюсь сделать основную игру в WP7, используя Silverlight, и не могу запустить ускорение графического процессора.

Счетчики частоты кадров видны, что указывает на использование графического процессора, для DirectX версии 10и версия драйвера DirectX - WDDM 1.1.

Я попытался сократить код обратно до чего-то простого, например:

    <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>

, и у прямоугольника все еще есть синий оттенок, указывающий, что этоне ускоряется GPU.

Есть идеи, почему это может быть?

Спасибо за ваше время

Ответы [ 2 ]

2 голосов
/ 28 октября 2010

Вы уверены, что правильно поняли идею?

Еще один отличный способ увидеть, что кэшируется визуально, это использовать флаг EnableCacheVisualization, упомянутый ранее. Опять же, это не доступно в версии Public Preview, но будет доступно в будущей версии.
Включение этого параметра добавит синий оттенок и некоторую прозрачность для каждой текстуры, которую мы передаем в графический процессор . Результатом этой визуализации является тепловая карта, где самые темные оттенки синего соответствуют множеству текстур, накладываемых друг на друга. Это позволяет вам видеть некоторые скрытые объекты, которые могут не быть очевидным источником скорости наполнения при первой проверке. Чем больше площадь, покрываемая сложением каждого прямоугольника, тем больше пикселей передается в графический процессор. Обратите внимание, что включение флага EnableCacheVisualization заставляет графический процессор выполнять дополнительную работу и, следовательно, может снижать частоту кадров в зависимости от текущей скорости заполнения и количества затененных текстур. Счетчики частоты кадров не будут указывать истинную частоту кадров приложения, когда используется этот флаг. Кроме того, как упоминалось ранее, поведение флага EnableCacheVisualization отличается в Silverlight для Windows Phone и Silverlight для других платформ. На Windows Phone текстуры, которые ускоряются графическим процессором, тонируются. На других платформах тонированные области показывают текстуры, которые не ускоряются графическим процессором.

Почему вы добавили CacheMode = "BitmapCache" к этим объектам? Я бы добавил это только к объекту, который использует анимацию на основе обновлений обратных вызовов. Другие анимации (анимации раскадровок) по умолчанию используют кэширование, а также ScrollViewer, Listbox и т. Д.

0 голосов
/ 28 октября 2010

Я не эксперт, но, возможно, вам нужно использовать XNA, а не Silverlight для ускорения GPU?

...