Swf渲染之——引言
Swf是什么?
不说人话版
Swf(Shockwave Flash)是一种由Adobe开发的多媒体文件格式,主要用于在网页上播放动画、视频和交互式内容。它最初是为Flash Player设计的,但随着技术的发展,Swf文件也被广泛应用于游戏开发和其他多媒体应用中。Swf文件由多个部分组成,包括头信息、资源表、帧数据和脚本等,这些部分共同构成了Swf文件的完整结构。
说人话版
Swf是一种多媒体格式,主要用于存储动画,但也能存储脚本等内容构成一个程序。内部“元件”往往使用矢量和位图来表示,矢量图可以进行缩放而不失真,而位图的显示效果则更加稳定。Swf文件里面全部由tags组成,适合在网络上流式传输。
为什么过时了?
Swf在2009年被Adobe宣布不再支持,主要原因是Flash Player的更新和HTML5的兴起。HTML5提供了更强大的多媒体支持,包括WebGL和Canvas,这些技术使得Swf在现代游戏开发中不再具有竞争力。此外,Flash Player的安全问题和性能问题也导致了它的逐渐淘汰。
为什么现在我们还讨论它
现在的游戏引擎对于角色动画的存储依然以以位图为主,面对长动画,必须使用位图来记录每一帧的信息,位图存储方式已经无法满足需求,所以需要一种新的存储方式。而swf就是一种适合存储长动画的格式,它内部的动画存储方式是矢量图,具备了体积小和精度高的特点。所以,我们仍然需要讨论它,因为它在现代游戏开发中仍然具有一定的价值。
举个例子:我在创作一个角色的动画的时候——
- 假如用纯粹的帧动画,一个角色需要50MB的存储空间
- 如果把角色的不同部件,然后使用游戏引擎自带的动画轨道进行拼装控制,能压缩到14MB
- 而如果使用swf,能压缩到300KB!最重要的是,如果你熟悉flash的创作,就会知道这300kb里的全部都是矢量存储!比位图的适用地方更广泛。
我作为Godot-Swf的作者,在此呼吁——我们是时候重新审视这门老技术了
本专栏的目标
本专栏聚焦于swf内部的动画如何在现代游戏引擎中进行渲染,包括如何解析swf文件、如何处理矢量图和位图、如何进行动画的播放和渲染等。
希望通过本专栏,读者能理解swf的内部结构,掌握如何在现代游戏引擎中进行渲染,甚至在自己喜爱的引擎中加入健壮的Swf渲染功能。
阅读本专栏需要的资源有
- C++:本专栏主要使用C++进行代码编写,因此读者需要具备一定的C++编程基础。
- Swf官方规范文档:已放在下方,提供最新的英文原版和中文机翻版本。
- Swf示例文件:swf示例文件下载,读者可以下载并研究。
本专栏的目录
- Swf渲染之——引言
- 持续更新ing。。。
参考文档: