【发布时间】:2011-10-02 21:02:50
【问题描述】:
每个应用程序都有自己的自定义二进制文件格式(例如 .mpq、.wad)。最重要的是,它通常是带拉链的。
所以,我的问题是,您如何巧妙地/巧妙地布局文件的二进制内容。开头是否有类似“目录”的结构?将所有内容转储到一个文件中会更好吗?
假设你有一个Shapes 的数组,并且在每个Shape 中都是变形的顶点数据(所以顶点数据已经从它最初加载的文件中改变了,所以应该重新保存)。
class Shape
{
vector<Vertex> verts ;
} ;
class Sphere : public Shape { } ; // ...more geometric shapes (Tet, Cube) are defined..
class Model : public Shape { } ; // general model "Shape" loaded from file
vector<Shape*> shapes ; // save me! contents are mix of Model, Sphere, Tet..
// each with variable number of verts
【问题讨论】:
-
会说它很大程度上取决于要序列化的数据。真的太笼统的问题无法回答...
-
我真的在寻求有关如何映射事物的技术。让我用一个例子来更新这个问题
-
Every application has its own custom binary file format- 仅适用于 (a) Redmond (b) 嵌入式/游戏编程;我可以建议 Boost.Serialization 作为一个好的起点吗? -
+1 表示 boost:: 序列化。我使用它并且效果很好(而且它也很快)。作为奖励,您可以获得(如果需要)XML 序列化,这对于调试和跨架构兼容性非常有用。结合 boost::streams,可以透明地压缩输出。
-
您可以尝试找到满足您要求的现有文件格式。您可能还会找到一个库来读取/写入那种数据,或者找到一个实用程序来操作这种格式的数据。如果没有必要,不要重新发明轮子。
标签: c++ serialization layout