我来自2D动画背景,所以当我使用动画序列时,我更喜欢使用一系列图像。对我而言,这很有意义,因为您可以轻松地从合成/编辑软件导出图像序列,并轻松定义方面。
我是游戏开发的新手,对使用精灵表感到好奇。有什么优点和缺点。文件大小是个问题吗? - 对我来说,似乎一堆小图像与一个大图像相同。此外,定义精灵的每个单独区域似乎时间繁琐。
基本上,我不明白为什么你会使用精灵表 - 请赐教。
由于
答案 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的幂和平方。但是,程序可以选择将该纹理的任意矩形渲染到屏幕上;它不必是二次方或二次方。因此,使用多个图像打包纹理,以最有效地利用纹理空间。
答案 2 :(得分:2)
使用精灵表没有大的好处,但有几个很小。但这种做法可以追溯到大多数人使用适当的2D图形软件制作游戏图形之前的时间,因此艺术家的工作流程不一定是当时最重要的事情。