1

2D ゲーム タイル マップを格納するためのファイル I/O を高速に取得する方法として、メモリ マップ ファイルについて説明を受けました。ゲームではデータが頻繁に更新され、更新する行/列がわかっているため、配列内でその方法で直接アクセスできます。ただし、いくつかの例を見ると、これがどのように機能するかわかりません。

構造体のメモリ マップ ファイルの作成、読み取り、および書き込みの小さな例を誰かが持っていますか。結果は 1D 配列になるため、ゲームで map[row * MAX_ROW + col].tileID = としてアクセスできます。バツ; 例えば。Boost または Win 32 で問題ありませんが、好みはありませんが、オンラインの例はやや混乱し、目的の結果に変換するのに苦労することがよくあります。

4

1 に答える 1

3

やや理解しやすい例を次に示します: ブースト メモリ マップ ファイルの問題: RAM ではなくディスクに移動する

char* を提供する .data() メンバーに注意してください。十分なメモリがあれば、これを任意の配列へのポインターにキャストしてワイルドにすることができます。

とはいえ、ここではメモリ マップ ファイルが間違った解決策であると私は強く疑っています。変更をディスクに保存したい場合は、通常の C++ (ベクター、クラス、ifstream など) を使用してレベルをロードし、好きなように変更して、完了したら再度書き出すだけではどうですか?

于 2012-12-31T00:56:49.400 に答える