我正在尝试从本教程之后的文件中读取内容: http://www.opengl-tutorial.org/beginners-tutorials/tutorial-7-model-loading/
问题是当我尝试复制代码并执行fscanf时,值始终会初始化为疯狂值,例如-848228281或类似的值。 第一次读取顶点的值有效,但不读取面的值。
while (!(feof(fp)))
{
read = fscanf(fp, "%c", &ch);
if (/*read == 4 && */ch == 'v')
{
// this works
read = fscanf(fp, "%f %f %f\n", &x, &y, &z);
vertices.push_back(vector3(x, y, z));
//glVertex3f(x, y, z);
}
else if (ch == 'f')
{
GLint vertexIndex[3], uvIndex[3], normalIndex[3];
// this line below does not work
int matches = fscanf(fp, "%d/%d/%d %d/%d/%d %d/%d/%d\n",
&vertexIndex[0], &uvIndex[0], &normalIndex[0],
&vertexIndex[1], &uvIndex[1], &normalIndex[1],
&vertexIndex[2], &uvIndex[2], &normalIndex[2]);
if (matches != 9)
{
printf("Incompatible file!");
return;
}
}
}
我的obj文件与本教程中的文件相同。
答案 0 :(得分:0)
当代码遇到读取的数据行时,该代码将进入else if (ch == 'f') { ... }
子句
s off
因为有'f'
个字符。但是随后的读取数值的尝试将失败(出于明显的原因)。