我想知道是否有人可以帮助解决此问题或者遇到类似问题。我正在尝试使用Silverlight在WP7中制作基本游戏,但我无法启动GPU加速。
帧速率计数器可见,表示正在使用GPU,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加速。
为什么会出现这种情况?
感谢您的时间
答案 0 :(得分:2)
你确定你有这个想法吗?
另一种了解可视化缓存内容的好方法是使用前面提到的EnableCacheVisualization标志。同样,这在公开预览版本中不可用,但将在未来版本中提供 启用此功能将为我们传递给GPU的每个纹理添加蓝色色调和一些透明度。这种可视化的结果是热图,其中最深的蓝色阴影对应于多个纹理彼此重叠。这允许您查看一些隐藏的对象,这些对象可能不是第一次检查时填充率的明显因素。通过在此处添加每个矩形所覆盖的区域越大,移交给GPU的像素越多。 请注意,启用EnableCacheVisualization标志会导致GPU执行额外的工作,因此会降低帧速率,具体取决于当前填充率以及要着色的纹理数量。使用此标志时,帧速率计数器不会指示应用程序的真实帧速率。此外,如前所述,EnableCacheVisualization标志的行为在Silverlight for Windows Phone和Silverlight的其他平台上有所不同。在Windows Phone上,GPU加速的纹理会着色。在其他平台上,有色区域显示的纹理不会被GPU加速。
为什么要将CacheMode =“BitmapCache”添加到这些对象中?我只会将此添加到使用基于回调更新的动画的对象。其他动画(故事板动画)默认使用缓存以及ScrollViewer,Listbox等。
答案 1 :(得分:-2)
我不是专家,但您可能需要使用XNA,而不是Silverlight才能获得GPU加速?