我正在使用C ++开发一个opengl项目。我需要编写一个加载器来输入.model文件中的功能。似乎fstream无法处理。任何评论或建议?感谢。
答案 0 :(得分:4)
您可能使用fstream
错误。如果您在文本模式下打开它,您将获得破坏加载过程的转换。您需要将文件打开为二进制文件。
std::ifstream file("something.model", std::ios::binary);
然后您可以读取原始数据:
// read in float
float f;
file.read(&f, sizeof(f));
但是你需要。请注意,int
或char
等类型不一定是正确的位宽。如果你想确定,你需要固定宽度的整数。 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文件几乎没用。