delphi - .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();
解决方案
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]);
推荐阅读
- c# - 如何计算字符串末尾的字母以外的所有内容
- c++ - 'for' 循环在满足终止条件之前终止
- postgresql - 如何在postgresql中选择列名以'_old'结尾的表的列
- java - java.text.ParseException:无法解析的日期:“”无法解析日期
- java - 我想从 Jira 插件的调度程序方法调用 Atlassian 的 getIssue 休息服务,该方法还需要用户凭据才能访问该 API
- linux - 从文件中删除匹配词
- ruby-on-rails - 如何使用rails调整imagemagick中的图像大小?
- android - Xamarin.Forms 在 TabbedPage 中刷新 ContentPage
- r - R 基于 %in% 的精确选择
- html - 没有javascript的点击时边框过渡