2010-10-27 46 views
1

我想知道是否有人可以帮助解决这个问题,或者有类似的问题。我正在尝试使用Silverlight制作WP7中的基本游戏,但无法启动GPU加速。Windows Phone 7 - GPU加速不起作用

帧速率计数器可见,表示正在使用GPU,directx版本为10,directx驱动程序版本是WDD​​M 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

你确定你有这个想法吗?

另一种可视化缓存的好方法是使用前面提到的EnableCacheVisualization标志。再次,这在公共预览版本中不可用,但将在未来的版本中提供。
将此功能打开后,会将每个纹理的蓝色色调和透明度添加到GPU。这种可视化的结果是一张热图,其中最黑暗的蓝色阴影对应于多个纹理叠加在一起。这可以让你看到一些隐藏的对象,这些对象在第一次检查时可能不是明显的贡献率。通过在这里添加每个矩形所覆盖的面积越大,交给GPU的像素越多。 请注意,启用EnableCacheVisualization标志会导致GPU执行额外的工作,因此可能会降低帧速率,具体取决于当前的填充率以及有多少纹理正在着色。使用此标志时,帧速率计数器不会指示应用程序的真实帧速率。另外,如前所述,EnableCacheVisualization标志的行为在用于Windows Phone的Silverlight和用于其他平台的Silverlight上不同。在Windows Phone上,由GPU加速的纹理是有色的。在其他平台上,着色区域显示GPU不加速的纹理。

为什么要为这些对象添加CacheMode =“BitmapCache”?我只会将此仅添加到基于回调更新使用动画的对象。其他动画(故事板动画)默认使用缓存以及ScrollViewer,Listbox等。

+0

我在这里阅读相反:http://msdn.microsoft.com/en-us/library/system.windows.interop.settings.enablecachevisualization%28VS.95%29.aspx“获取或设置一个值,指示是否使用非生产分析可视化模式,该模式显示未使用彩色覆盖图进行GPU加速的页面区域,请勿在生产代码中使用。“最初我手动移动屏幕上的图像,所以想要缓存,认为我只是尝试更简单的代码来看看发生了什么问题。 – JeremyBeadle 2010-10-27 22:18:17

+0

我的错误,你是对的,它在WP7中被颠倒“彩色区域会显示传递给GPU的纹理,以便在Silverlight for Windows Phone中进行加速。在Silverlight浏览器插件中,彩色区域显示的纹理不是由GPU加速的。“。模拟器的性能必须非常差:(谢谢! – JeremyBeadle 2010-10-27 22:21:06

-2

我不是专家,但也许你需要使用XNA,Silverlight的不是为获得GPU加速?

+0

感谢您的回复,据我所知,它在Silverlight中的作用也像在桌面上 – JeremyBeadle 2010-10-27 21:28:53

+0

我也忘了提及这是使用最新的模拟器,而不是设备.. – JeremyBeadle 2010-10-27 22:06:20

+3

为什么回答如果你承认不知道答案? – Jay 2010-10-28 18:27:31