首页 > 解决方案 > .OBJ OpenGL 错误渲染

问题描述

有谁知道,为什么会这样?尝试使用 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();

标签: delphiopengl3dwavefrontopengl-compat

解决方案


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]);

推荐阅读