与图像序列相比,精灵表的优缺点是什么?

时间:2010-08-13 00:54:07

标签: image animation sequence sprite-sheet

我来自2D动画背景,所以当我使用动画序列时,我更喜欢使用一系列图像。对我而言,这很有意义,因为您可以轻松地从合成/编辑软件导出图像序列,并轻松定义方面。

我是游戏开发的新手,对使用精灵表感到好奇。有什么优点和缺点。文件大小是个问题吗? - 对我来说,似乎一堆小图像与一个大图像相同。此外,定义精灵的每个单独区域似乎时间繁琐。

基本上,我不明白为什么你会使用精灵表 - 请赐教。

由于

3 个答案:

答案 0 :(得分:6)

精灵表的性能更好,因为您将所有数据都包含在单个纹理中。假设您有1000个精灵从精灵表中播放相同的动画。绘图过程就像是。

Set the sprite sheet texture.
Adjust UV's to show single frame of animation.
Draw sprite 0
Adjust UV's
Draw sprite 1
.
.
.
Adjust UV's
Draw sprite 998
Adjust UV's
Draw sprite 999

使用纹理序列可能会导致最坏的情况:

Set the animation texture.
Draw sprite 0
Set the new animation texture.
Draw sprite 1
.
.
.
Set the new animation texture.
Draw sprite 998
Set the new animation texture.
Draw sprite 999

尔加!在绘制每个精灵之前,你必须将渲染状态设置为使用不同的纹理,这比调整几个UV要快

答案 1 :(得分:4)

许多(大多数?)显卡需要二次幂,图像的方形尺寸。因此,例如128x128,512x512等。然而,许多/大多数精灵不是这样的尺寸。然后你有两个选择:

  • 将精灵图像向上舍入到最接近的2的二次方。 16x32精灵变为两倍大,透明像素填充为32x32。 (这很浪费)
  • 将多个精灵打包到一个图像中。而不是填充透明度,为什么不填充其他图像?尽可能高效地打包这些图像!然后只渲染图像的片段,这是完全有效的。

显然,第二种选择更好,浪费更少。因此,如果你必须将几个精灵打包成一个图像,为什么不以精灵表的形式将它们全部打包?

总而言之,加载到显卡中的图像文件必须是2的幂和平方。但是,程序可以选择将该纹理的任意矩形渲染到屏幕上;它不必是二次方或二次方。因此,使用多个图像打包纹理,以最有效地利用纹理空间。

答案 2 :(得分:2)

  • 雪碧片往往更小 文件(因为只有1个标题 对于整个地段。)
  • 精灵表加载速度更快 只有一个磁盘访问而不是 几个
  • 您可以轻松查看或调整多个框架 马上
  • 当您减少浪费的视频内存 将整批货物装入一个表面 (正如Ricket所说)
  • 可以通过偏移来描绘单个精灵(例如,在隐式网格上 - 无需明确标记或记录每个精灵的位置)

使用精灵表没有大的好处,但有几个很小。但这种做法可以追溯到大多数人使用适当的2D图形软件制作游戏图形之前的时间,因此艺术家的工作流程不一定是当时最重要的事情。