.ASE ファイルを読み取るためのクラスがあり、変数をバイナリ ファイルに格納して、次回アプリケーションを実行するときに高速にアクセスできるようにする必要があります。書き込みプロセスを簡単にするために、情報を構造体に保存します。これは私が使用する構造体で、ヘッダーで定義されています。
struct myMesh{
std::vector<Vector3> vertices;
std::vector<Vector2> uvs;
std::vector<Vector3> normals;
int verticesSize;
int uvsSize;
int normalsSize;
};
変数を定義するために、ヘッダーにもこの構造体のインスタンスを作成しました。
myMesh myInfo;
構造体変数にデータを格納した後、C 関数を使用してバイナリ ファイルを作成します。
std::string path = filename + ".bin";
const char * c = path.c_str();
FILE *pBinaryFile;
pBinaryFile = fopen(c, "wb");
if (pBinaryFile==NULL){
std::cout << "error";
}
fwrite(&myInfo.vertices, sizeof(myInfo), 1, pBinaryFile);
fclose(pBinaryFile);
バイナリが正しく作成されたかどうかをテストするために、ファイルを読み取り、構造体の別のインスタンスを作成してデータを視覚化します。
myMesh _myInfo;
FILE *theFile;
theFile = fopen(c, "rb");
if (theFile==NULL){
std::cout << "error";
}
fread(&_myInfo, sizeof(_myInfo), 1, theFile);
fclose(theFile);
そして、これはうまくいきます。書き込みプロセスを使用せずに、ファイルを読み取ろうとすると問題が発生します。
/*FILE *pBinaryFile;
pBinaryFile = fopen(c, "wb");
if (pBinaryFile==NULL){
std::cout << "error";
}
fwrite(&myInfo.vertices, sizeof(myInfo), 1, pBinaryFile);
fclose(pBinaryFile);*/
myMesh _myInfo;
FILE *theFile;
theFile = fopen(c, "rb");
if (theFile==NULL){
std::cout << "error";
}
fread(&_myInfo, sizeof(_myInfo), 1, theFile);
fclose(theFile);
そして今、それは機能しません。struct の int 変数は正しく取得されますが、vector 変数は ??? の形式で表示されます。メモリエラーで。私は C++ にまったく慣れていないので、おそらくばかげた質問ですが、要点がわかりません。ofstream と ifstream の C++ 関数も試しましたが、同じ問題が発生します。
前もって感謝します。