我正在为游戏编写“重播系统”,我想知道如何存储录制的帧?
至于现在我有这个代码/结构(注意:这个代码被缩短了):
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.......
};
我在想的是,制作一个原始字节数组,将其分配给双端队列容器的大小,用 memcpy 将它们从双端队列复制到数组,然后将所有数组字节写入文件。
然后,如果我想读取我的记录数据,我只需读取文件的字节并将它们分配给一个新数组,然后使用 memcpy 将数组内容复制到一个双端队列..
这很像..好吧.. C方式?必须有其他方法来做到这一点,将数据存储在文件中,然后将其读回双端队列(也许使用一些 C++11 功能?)。
我将如何做到这一点?
您推荐哪种方法?
如果这很重要,我正在使用 Windows。