java - 在典型的opengl渲染引擎中,我应该如何加载和显示Wavefront OBJ文件

我已经在Java中成功创建了一个对象加载器,可以加载顶点,索引,纹理坐标和法线。对象加载器从Wavefont OBJ文件读取。

这是相对简单的,但是,当我尝试使用纹理坐标索引和法线索引加载到更复杂的文件中时,我不知道该如何处理这些额外的索引集?我也找不到任何opengl(或本例中为opengl es 1.1)解析纹理和普通索引的方法。这不仅困扰着我在Android的opengl中,而且以前在webgl中也困扰我,所以任何帮助将不胜感激。
令人烦恼的是,有如此多的教程讨论如何加载顶点,索引,纹理坐标和法线,但是我还没有看到(对于opengl es)它们在纹理和法线索引中加载的教程。

我是否必须根据索引重新排序或重建纹理坐标/法线数组?或缺少某些功能,或?

最佳答案

但我还没有看到(对于opengl es)它们加载纹理和法线索引的地方。


这是有原因的:您不能。这通常就是为什么Wavefront OBJ格式不适合加载到OpenGL / D3D应用程序中的原因。

每个顶点,位置/法线/ texCoord /等数据的每种组合必须唯一。如果要进行索引渲染,则每个索引都指位置/法线/ texCoord /等的特定组合。

简而言之,您只能使用一个索引进行渲染。该索引同时索引到所有属性数组。因此,如果您的数据使用不同的索引列表索引了不同的属性,则必须转换数据以正确执行操作。最好的方法是通过某种离线工具。

本文翻译自 https://stackoverflow.com/questions/8130310/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 java android opengl-es indices


相关文章:

ios - OpenGL ES 2.0渲染到纹理

java - 在struts中,如何获取布尔值的null?

javascript - 为什么PhoneGap Android应用程序在将大量数据插入SQL时会崩溃?

android - 如何在/ Android / obb下创建文件夹?

iphone - iPhone上的OpenGL ES不会画任何东西

android - 防止onPause破坏OpenGL Context

java - 将Maven参数注入Java类

java - 将DBObject转置为json

java - 线程“主”中的异常java.lang.IndexOutOfBoundsException:索引:0,大小:0

android - 倾斜移动屏幕时应用程序注销