7.1 导出Mesh文件

CLion项目文件位于 samples\mesh_and_material\export_mesh_file

这一节将写死在vertex_data.h中的立方体顶点数据,存放到自定义格式的.mesh文件中。

1. Mesh文件格式

.mesh文件格式如下:

文件头 顶点个数 索引个数 顶点数据 索引数据

2. 导出文件

按照上面的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,拖到十六进制编辑器中查看:

Copyright © captainchen all right reserved,powered by GitbookFile Modify: 2021-04-26 14:49:02

results matching ""

    No results matching ""

    results matching ""

      No results matching ""