我正在使用一个库将 Wavefront .obj 文件加载到我的 OpenGL 应用程序(tinyobjloader)中。我注意到加载对象时出现错误。当我加载一个坐标为例如的对象时。0.9999999 设置为 0。通过调试我发现以下方法会产生这种行为:
static inline float parseFloat(const char*& token)
{
token += strspn(token, " \t");
float f = (float)atof(token);
token += strcspn(token, " \t\r");
return f;
}
所以 atof() 以某种方式返回一个 int,而不是一个浮点数。我读到有些编译器在使用 atof() 时不包含“stdlib.h”,结果是 atof() 返回一个整数。
奇怪的是,即使我包含“stdlib.h”,错误仍然存在。我不知道是什么导致了这种行为。
任何想法?