我看过一些程序显示惊人的高度详细的 3d 场景和配乐,但让我震惊的是它们都小于 64kB!这些程序如何运作?
最佳答案
他们按程序生成内容。即他们不添加 3d 模型、位图、基于样本的音频文件,...而是从代码或一些低细节表示中生成。
使用自相似性(分形)并通过组合简单的构建块和公式来构建复杂的数据通常是紧凑表示的关键。
音频可以以某种类似 MIDI 的格式存储,其中存储了不同的音符。
纹理是结合过滤器、分形、... 谷歌搜索“柏林噪声”生成的一个简单示例。 Shows how to create very different textures from perlin noise
3D 模型可能使用公式进行一些几何描述,并且使用类似于程序纹理的技术添加细节。
大多数使用一些运行时解包器。即您的正常可执行文件大于限制并使用 exe 打包程序进行压缩。演示通常不使用 UPX,而是专门的打包程序,它们具有非常小的加载程序/解包程序,甚至可能会泄漏内存(如果您可以保护几个字节,谁会关心内存泄漏)。
关于3d - 64kB 演示,它们是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6081368/