优化 GPU 呈现性能的提示

尽管 GPU 呈现可以大大改进 SWF 内容的性能,不过内容的设计也发挥着非常重要的作用。请注意,以前在软件呈现中作用良好的设置有时在 GPU 呈现下可能不能正常发挥作用。以下提示可以帮助您在不牺牲软件呈现性能的情况下,实现良好的 GPU 呈现性能。

注: 支持硬件呈现的移动设备通常会从 Web 访问 SWF 内容。因此,最好的办法是在创建 SWF 内容时就考虑到这些提示,这样可以确保在所的屏幕范围内实现最佳的体验。
  • 避免在 HTML 嵌入参数中使用 wmode=transparent wmode=opaque 。这些模式可能会导致性能下降。还可能会导致在软件和硬件呈现中音频-视频同步的微小损失。另外,当这些模式生效时,许多平台不支持 GPU 呈现,会严重减弱性能。

  • 请仅使用正常和 Alpha 混合模式。避免使用其他混合模式,特别是层混合模式。当在 GPU 下呈现时,并非所有混合模式均可以忠实地再现。

  • 当 GPU 呈现矢量图形时,它会在绘制图形前将图形分为若干小三角形形状的网格。这个过程称为镶嵌。镶嵌会带来小的性能损失,当形状的复杂程度增加时,这个成本也会随之增加。若要尽量减少性能影响,请避免使用 morph 形状(GPU 会在每个帧上呈现镶嵌)。

  • 避免自相交曲线、极细的曲线区域(例如非常细的月牙)以及沿着形状的边缘具有非常复杂的细节。这些形状比较复杂,GPU 很难将其镶嵌成三角形网格。要理解其中的原因,以这样两个矢量为例:一个 500 × 500 正方形,一个 100 × 10 月牙。GPU 可以轻松地呈现大的正方形,因为它正好可以分成两个三角形。然而,可能需要很多个三角形才能描述出月牙的曲线。因此,呈现形状更为复杂,尽管它牵涉的像素很少。

  • 避免按比例进行大的改动,因为这种变动同样会导致 GPU 再次镶嵌图形。

  • 尽量避免过度绘制。过度绘制会分层放置多个图形元素,各个图形之间会彼此遮蔽。使用软件呈现器,每个像素仅绘制一次。因此,对于软件呈现,应用程序不会导致性能下降,不论在那个像素位置有多少图形元素彼此覆盖。相反,硬件呈现器会为每个元素绘制像素,不论其他元素是否遮蔽该区域。如果两个矩形彼此重叠,则硬件呈现器会绘制重叠区域两次,而软件呈现器仅绘制该区域一次。

    因此,在使用软件呈现器的台式机上,您通常不会发现到过度绘制的影响。不过,许多重叠的形状可能会在使用 GPU 呈现的设备上带来不利的影响。最佳做法是从显示列表中删除对象,而不是隐藏这些对象。

  • 避免使用大的填充矩形作为背景。而是改为设置舞台的背景色。

  • 尽可能避免位图重复的默认位图填充模式。改为使用位图锁定模式以实现更好的性能。