## 7.1 导出Mesh文件 CLion项目文件位于 samples\meshandmaterial\exportmeshfile 这一节将写死在 中的立方体顶点数据,存放到自定义格式的 文件中。 Mesh文件格式 文件格式如下: 文件头 | 顶点个数 | 索引个数| 顶点数据| 索引数据 导出文件 按照上面的Mesh文件格式,在 中新增函数 导出立方体的顶点数据和索引数据。 在 中调用: 编译运行,生成了文件 ,拖到十六进制编辑器中查看:
CLion项目文件位于 samples\mesh_and_material\export_mesh_file
这一节将写死在vertex_data.h中的立方体顶点数据,存放到自定义格式的.mesh文件中。
.mesh文件格式如下:
| 文件头 | 顶点个数 | 索引个数 | 顶点数据 | 索引数据 |
|---|
按照上面的Mesh文件格式,在vertex_data.h中新增函数ExportMesh导出立方体的顶点数据和索引数据。
//vertex_data.h //Mesh文件头 struct MeshFileHead{ char type_[4]; int vertex_num_;//顶点个数 int vertex_index_num_;//索引个数 }; //导出Mesh文件 static void ExportMesh(string save_path){ ofstream output_file_stream(save_path,ios::out | ios::binary); MeshFileHead mesh_file_head; mesh_file_head.type_[0]='m'; mesh_file_head.type_[1]='e'; mesh_file_head.type_[2]='s'; mesh_file_head.type_[3]='h'; mesh_file_head.vertex_num_=kVertexRemoveDumplicateVector.size(); mesh_file_head.vertex_index_num_=kVertexIndexVector.size(); //写入文件头 output_file_stream.write((char*)&mesh_file_head, sizeof(mesh_file_head)); //写入顶点数据 output_file_stream.write((char*)&kVertexRemoveDumplicateVector[0],kVertexRemoveDumplicateVector.size()*sizeof(Vertex)); //写入索引数据 output_file_stream.write((char*)&kVertexIndexVector[0],kVertexIndexVector.size()*sizeof(unsigned short)); output_file_stream.close(); }
在main.cpp中调用:
int main(void) { VertexRemoveDumplicate(); ExportMesh("../data/model/cube.mesh"); return 0; ...... }
编译运行,生成了文件cube.mesh,拖到十六进制编辑器中查看: