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

我来自2D动画背景,所以当我使用动画序列时,我更喜欢使用一系列图像。对我而言,这很有意义,因为您可以轻松地从合成/编辑软件导出图像序列并轻松定义方面。 我是游戏开发的新手,对使用精灵表感到好奇。有什么优点和缺点。文件大小是个问题吗? - 对我来说,似乎一堆小图像与一个大图像相同。此外,定义精灵的每个单独区域似乎时间繁琐。 基本上,我不明白为什么你会使用精灵表 - 请赐教。 谢谢     
已邀请:
精灵表的性能更好,因为您将所有数据都包含在单个纹理中。假设您有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要慢得多。     
许多(大多数?)显卡需要二次方,尺寸为图像。因此,例如128x128,512x512等。然而,许多/大多数精灵不是这样的尺寸。然后你有两个选择: 将精灵图像四舍五入到最接近的二次幂方格。 16x32精灵变为两倍大,透明像素填充为32x32。 (这很浪费) 将多个精灵打包成一个图像。而不是填充透明度,为什么不填充其他图像?尽可能高效地打包这些图像!然后只渲染图像的片段,这是完全有效的。 显然,第二选择更好,浪费更少。因此,如果您必须将多个精灵打包到一个图像中,为什么不将它们全部以精灵表的形式打包? 总而言之,加载到显卡中的图像文件必须是2和2的幂。但是,程序可以选择将该纹理的任意矩形渲染到屏幕上;它不必是二次方或二次方。因此,使用多个图像打包纹理,以最有效地利用纹理空间。     
雪碧表往往更小 文件(因为只有1个标题 对于整个地段。) 精灵表加载速度更快 只有一个磁盘访问而不是 一些 您可以轻松查看或调整多个帧 立刻 当你减少浪费的视频内存 将整批货物装入一个表面 (正如Ricket所说) 单个精灵可以通过偏移来描绘(例如,在隐式网格上 - 无需明确标记或记录每个精灵的位置) 使用精灵表没有大的好处,但有几个小的。但是这种做法可以追溯到大多数人使用适当的2D图形软件制作游戏图形之前的时间,所以艺术家的工作流程不一定是当时最重要的事情。     

要回复问题请先登录注册