使用渐变会影响WP7性能吗?

时间:2011-03-22 19:24:15

标签: silverlight windows-phone-7

我的一位同事建议我避免在我的移动应用程序中使用任何渐变,因为手机无法处理在按钮/背景等上渲染渐变所需的工作量。我在渲染按钮时没有看到任何挂起或任何东西,但是我应该避免使用渐变吗?

3 个答案:

答案 0 :(得分:4)

这取决于您使用它的位置。如果您要将SolidColorBrush与GradientBrush进行比较,平台需要做更多的工作来渲染渐变,但是性能差异可以忽略不计。

我能想到的唯一情况是,假设您在大型ListBox中使用复杂渐变并在ListBoxItems中使用它,这使得很多渐变得到实例化。在那种情况下,我宁愿用低质量的JPEG替换渐变。 JPEG(图像)将自动为我提供更多的系统级缓存,列表框的性能将比你在其中提供矢量渐变的效果更好。

但如果它是单个按钮或其他一些控件样式,那么使用Gradients就完全没问题了。

更多此类提示可以在我的博客中找到 - http://jobijoy.blogspot.com/2011/05/wp7dev-tip-2-few-things-to-remember-on.html

答案 1 :(得分:3)

我不明白为什么渐变会影响性能,但渐变在许多WP7屏幕上都不能很好地渲染,因为它们针对地铁进行了优化,而不会提升渐变效果。我见过用于原型的HTC奖杯上的彩色条带

答案 2 :(得分:0)

使用渐变 - 线性或径向 - 不应有任何明显的影响。但这并不意味着它不会。

WP7 Silverlight基于普通的Silverlight,而Silverlight又基于WPF。在WPF中,线性梯度在广泛使用时会产生明显的影响,无论出于何种原因,径向梯度都会产生相当大的影响。因此,看看它的历史和血统,经常使用它可能会产生重大影响。

也就是说,如果你考虑GPU实际需要做些什么来绘制它们,线性和径向渐变都接近相同的工作量,并且可以优化以使用很少的着色器指令。线性下降到4(如果底层场景图允许顶点修改,则为1),径向下降到5(如果我可以修改顶点则为4,在大多数情况下甚至可以为3)。这两个着色器都非常简单。这意味着不应该产生任何真正的影响。也许微软可以在某些时候进行优化。