ゲームの「再生システム」を書いていますが、記録されたフレームをどのように保存すればよいのでしょうか?
今のところ、私はこのコード/構造を持っています(注:このコードは短縮されています):
struct Point4D { float x, y, z, w; };
struct Point3D { float x, y, z; };
struct Point2D { float x, y; };
struct QuatRot { Point4D Front,Right,Up; };
struct VehicleInfo
{
Point3D Pos,Velocity,TurnSpeed;
QuatRot Rotation;
};
namespace Recorder
{
struct FrameInfo
//~380 bytes / frame| max 45600 bytes @ 120 fps
//max 3.7 GB raw data for 24 hours of recording, not bad..
{
std::chrono::high_resolution_clock::duration time;
VehicleInfo Vehicle;
int Nitro;
float RPM;
int CurrentGear;
};
std::deque<FrameInfo> frames;
FrameInfo g_Temp;
void ProcessRecord()
{
//record vehicle data here to g_Temp
frames.push_back(g_Temp);
return;
}
//other recording code.......
};
私が考えていたのは、生のバイト配列を作成し、それを deque コンテナーのサイズに割り当て、memcpy で deque から配列にコピーしてから、すべての配列バイトをファイルに書き込むことです..
次に、記録データを読みたい場合は、ファイルのバイトを読み取って新しい配列に割り当て、memcpy を使用して配列の内容を deque にコピーします。
これはよく似ています..まあ..Cの方法ですか?これを行うには、他の方法が必要です。データをファイルに保存してから、それを両端キューに読み込みます (おそらく C++11 の機能を使用しますか?)。
どうすればこれを達成できますか?
どのアプローチをお勧めしますか?
それが重要な場合、私は窓を使用しています。