.OBJ OpenGL 渲染错误
.OBJ OpenGL wrong render
有人知道,为什么会这样?尝试使用 Opengl 渲染 OBJ 文件。
// (0 - индекс вершины / 1 - индекс текстурной координаты / 2 - индекс нормали)
for i := 0 to length(faces) - 1 do
begin
glBegin(faces[i].mode);
Count := length(faces[i].data);
for k := 0 to Count - 1 do
begin
glNormal3fv(@normals[faces[i].data[k].normalIndex]);
glTexCoord2fv(@texcoords[faces[i].data[k].texCoodIndex]);
glVertex3fv(@vertexes[faces[i].data[k].vIndex]);
end;
glEnd();
Wavefront OBJ从1开始。所以你必须从每个索引中减去1:
glNormal3fv(@normals[faces[i].data[k].normalIndex - 1]);
glTexCoord2fv(@texcoords[faces[i].data[k].texCoodIndex - 1]);
glVertex3fv(@vertexes[faces[i].data[k].vIndex - 1]);
有人知道,为什么会这样?尝试使用 Opengl 渲染 OBJ 文件。
// (0 - индекс вершины / 1 - индекс текстурной координаты / 2 - индекс нормали)
for i := 0 to length(faces) - 1 do
begin
glBegin(faces[i].mode);
Count := length(faces[i].data);
for k := 0 to Count - 1 do
begin
glNormal3fv(@normals[faces[i].data[k].normalIndex]);
glTexCoord2fv(@texcoords[faces[i].data[k].texCoodIndex]);
glVertex3fv(@vertexes[faces[i].data[k].vIndex]);
end;
glEnd();
Wavefront OBJ从1开始。所以你必须从每个索引中减去1:
glNormal3fv(@normals[faces[i].data[k].normalIndex - 1]);
glTexCoord2fv(@texcoords[faces[i].data[k].texCoodIndex - 1]);
glVertex3fv(@vertexes[faces[i].data[k].vIndex - 1]);