在 C++ 中加载 .model 文件
Posted
技术标签:
【中文标题】在 C++ 中加载 .model 文件【英文标题】:load .model file in C++ 【发布时间】:2010-01-23 08:21:32 【问题描述】:我正在使用 C++ 开发一个 opengl 项目。我需要编写一个加载器来从 .model 文件中输入特征。似乎 fstream 无法处理。有什么意见或建议吗?谢谢。
【问题讨论】:
你能提供更多关于.model
文件格式的信息吗?为什么你认为fstream
不能处理它?
像往常一样,尝试将其归结为一个简单、最小的测试用例来展示问题会有所帮助。
【参考方案1】:
你可能用错了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));
【讨论】:
叹息......事实上,我忘了把标记为过剩。抱歉,我想 fstream 现在可以很好地处理这种情况。谢谢你们。 @small_potato:没问题。继续发布您的解决方案作为答案并接受它,这样问题就完成了。【参考方案2】:.model 文件中的数据很可能是描述模型每个多边形坐标的数字。您必须像读取任何其他类型的文件中的数据一样读取这些数字,并使用 openGL 基元来绘制模型的多边形。
问题是:有很多不同的方法可以用数字表示一堆多边形,所以如果你不知道你的 .model 文件的结构,你的 .model 文件几乎是无用的。
【讨论】:
以上是关于在 C++ 中加载 .model 文件的主要内容,如果未能解决你的问题,请参考以下文章