ファイルフォーマットを
ちょっと大きなプログラムをC++開発しようと思ってて。
そのプログラムはいろんなデータを扱う予定。
なので現在,ファイルIOのライブラリを作ろうとファイルフォーマットを考えてます。
今日のブログは今考えていることをちょろちょろと書いてみようかなと。
フォーマットは読み込み/書き込み時間を考えてバイナリに。
扱いたいデータは
- 3Dのメッシュデータ
- ツリーデータ
- イメージデータ
などなど。
メッシュデータなんかだと,データはいくつかのブロックに分かれるんで,チャンク構造がいいかなぁと。
LightWaveや3D Studio Maxなんかもチャンク構造だしね。
チャンクっていうのはバイナリデータのブロックをさします。
チャンクはヘッダー部分とその中身で構成されます。
ヘッダー部分に中身のサイズがあるので,ファイル内に複数チャンクがある場合,次のチャンクにジャンプできる仕組みをとれるようにする。
(よくやる手ですね)
ただツリーデータとかだと階層を持たせたいのでチャンクのヘッダー部分にはいろいろとデータを持たせて冗長な感じにしようかと。
中身の方は構造体の配列を格納できるようにするつもり。
そして構造体の定義をチャンクのヘッダー部分で文字列でもっていようかなと。
(相当冗長だが使い易くはなると思って)
とりあえず今のところはこんな感じです。