为什么大多数主要的游戏引擎都不将gif用于动画纹理?


28

使用动画表或Gif效果更好?Gif与Animation Sheets相比的一个优势是,您不必考虑由于代码和在适当的滴答声中进行更新而导致帧变得太快或太慢的情况。

使用Gif的缺点是什么?动画表相对于Gif的优点是什么?


7
然后,也许您应该将您的问题改写为“为什么大多数主流游戏引擎都不将gif用于动画纹理?” 至少有我所知道的,由于充分的原因,它们并不常见。我认为这将为您提供技术点,说明为什么不使用它们,而不是一个更好的问题,这不适用于SE网站。
Coburn

39
One advantage Gifs have over Animation Sheets is that you don't have to think about frames going too fast or too slow为什么?您要凭什么做出这个假设?图书馆?文件格式规范?gif文件仍然只是数据,您仍然需要代码来解释它(以正确的速度呈现)
hoffmale

13
帅哥说什么。GIF不是魔术;他们的动画仍然需要由某些软件控制和执行,包括其时间安排,在这种情况下,该软件是由您编写的。老实说,我不希望您的动画表处理代码与GIF处理代码有很大的不同。
与莫妮卡(Monica)进行的轻度比赛

12
您的Spritesheet和GIF代码之间的唯一区别是,您的GIF代码会将GIF转换为Spritesheet,然后调用Spritesheet代码;)
MickLH

6
gif没有任何优势。如果您要进行帧间压缩,则gif的效率大约是适当的视频编解码器的30倍,同时质量也较差(对于真实感的东西)。
Sarge Borsch

Answers:


91

GIF缺点:

  • 调色板非常有限,通常为256种颜色,且具有难看的抖动(是的,您可以在动画GIF中使用256种以上的颜色,但这并不常见)
  • GPU在硬件中不支持GIF压缩(意味着您无论如何都必须将其解压缩到CPU上)
  • 您只能选择一种颜色以提高透明度(除非实施自定义处理)
  • 没有随机访问。需要读取所有先前的GIF帧并将其解压缩以访问帧。
  • 被压缩。您需要代码中专用的解压缩功能。您不能选择其他(更好的)压缩算法。(是的,也存在未压缩的GIF,但这并不常见)

使用自定义格式,所有这些项目都可以很快得到解决。您可以更好地控制图像格式,质量,透明度,随机访问和压缩(包括DXT等GPU支持的格式)。更好的是,您可以确定所需功能的优先级。

Gif与Animation Sheets相比的一个优势是,您不必考虑由于代码和以适当的滴答声进行更新而导致帧变得太快或太慢的情况。

以上说法具有误导性。将GIF fps与实际游戏fps同步与同步自定义精灵动画没有太大区别。在这两种情况下,您都具有完全相同的设置-帧列表,所需的帧速率和渲染事件。GIF中没有神奇的粉末-无论如何,您都必须将GIF解压缩为Spritesheet,这无法达到目的。

当然,某些游戏引擎可能会将某些GIF问题隐藏在幕后,但随后,可以使用更好的方式对Spritesheets进行处理。

据说,在某些情况下,GIF可能会起作用。例如HTML / CSS GUI,但是它们本身非常少见并且非常耗资源。


我不明白“一种颜色代表透明性”。具有多种颜色的透明度是什么意思?您是在谈论改变alpha值,例如在纹理上应用透明度渐变吗?
埃里克

3
@Erik就是这样。通用GIF最多支持256种颜色,其中只有1种可以标记为透明。与其他格式不同,透明度通常具有更大的范围。
克罗姆斯特表示支持莫妮卡

@Kromster实际上,精通资源的网站对动画图像使用自定义动画机制,例如CSS background-image位置动画,其中动画放置在一个大图像上,然后按偏移量移动。
托马什Zato -恢复莫妮卡

@TomášZato正确。抱歉,我是否另有规定?
克罗姆斯特表示支持莫妮卡

2
@ luk32这是一个缺点,因为比旧的GIF压缩有更好的压缩方法。因此,您要么使用次优的GIF压缩,要么进行两次(解压缩)两次(请注意,压缩已压缩的数据通常也会产生更大的大小)。
克罗姆斯特表示支持莫妮卡

32

为了将任何图像文件用作游戏中的纹理,必须在GPU上创建一个纹理,并且图像文件中的像素数据必须加载到该纹理上。

GPU 支持CPU上的图像文件支持的许多功能。它们不支持JPG压缩,不支持PNG压缩,并且特别参考GIF时,不支持自动动画

因此,即使您确实使用了GIF文件,仍然仍然必须编写自己的动画和定时代码。GIF没有给您任何东西。


30
请注意,“ CPU”不支持这些功能,Web浏览器和操作系统则不支持。
user253751

7
什么,还没有人编写GPGPU Web浏览器?
卡米尔·古德塞内

7
@CamilleGoudeseune你笑了。我哭了。
3Dave

13

GIF的调色板有限。(255)您还必须实现GIF的解析和动画处理。因此,时间和格式的技术方面都没有进步。


4
如果不需要透明度,则为256,否则为255。
CVn

@MichaelKjörling仍然是256,具有透明度-只有一种颜色被指定为“透明”。我相信信息存储在标题中。
3Dave

@DavidLively因此“有效”。颜色仍然存在,但是不能用作不透明颜色。
CVn

@Kromster是的。已删除。我的数学很好。
3Dave
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.