用C ++加载.model文件

时间:2010-01-23 08:21:33

标签: c++ opengl

我正在使用C ++开发一个opengl项目。我需要编写一个加载器来输入.model文件中的功能。似乎fstream无法处理。任何评论或建议?感谢。

2 个答案:

答案 0 :(得分:4)

您可能使用fstream错误。如果您在文本模式下打开它,您将获得破坏加载过程的转换。您需要将文件打开为二进制文件。

std::ifstream file("something.model", std::ios::binary);

然后您可以读取原始数据:

// read in float
float f;
file.read(&f, sizeof(f));

但是你需要。请注意,intchar等类型不一定是正确的位宽。如果你想确定,你需要固定宽度的整数。 Boost提供such a library

#include <boost/cstdint.hpp>

// ...
// read a 32-bit int
boost::uint32_t i;
file.read(&i, sizeof(i));

答案 1 :(得分:1)

.model文件中的数据很可能是描述模型中每个多边形坐标的数字。您必须读取这些数字,就像读取任何其他类型的文件中的数据一样,并使用openGL基元来绘制模型的多边形。

问题是:有很多不同的方式用数字表示一堆多边形,所以如果你不知道.model文件的结构,你的.model文件几乎没用。