无法获得具有纹理的3D模型以显示正确

时间:2013-08-31 18:31:08

标签: ios 3d textures opengl-es-2.0 glkit

我尝试使用“学习OpenGL ES for iOS:Erik M. Buck的现代3D图形编程动手指南”一书来学习OpenGL

我已经到了试图在测试器应用程序中加载3D模型以确认我的知识的阶段,虽然我可以显示模型显示它反转并且纹理看起来部分显示(或显示不正确)。 / p>

我已经尝试了GL_BLEND,GL_DEPTH_TEST,使用ortho而不是使用ortho无济于事,并意识到我可能错过了一些积分......想到它可能与面部法线有关吗?

这是应该出现的内容:

enter image description here

这就是我得到的:

enter image description here 有人可以帮忙吗?

由于

2 个答案:

答案 0 :(得分:0)

我认为球体模型的代码假定背面剔除要么被禁用,要么需要相反的缠绕方向(顺时针或反时钟)用于其三角形条带。您应该尝试正确初始化OpenGL ES以满足该代码的期望。我会试试这个:

gl.glDisable(GL10.GL_CULL_FACE);

OR

gl.glEnable(GL10.GL_CULL_FACE);
gl.glFrontFace(GL10.GL_CCW);
gl.glCullFace(GL10.GL_BACK);

OR

gl.glEnable(GL10.GL_CULL_FACE);
gl.glFrontFace(GL10.GL_CW);
gl.glCullFace(GL10.GL_BACK);

有关详细信息,请参阅OpenGL红皮书第2章中的“多边形详细信息”:

http://www.glprogramming.com/red/chapter02.html

答案 1 :(得分:0)

这本书的作者为我看了这个,发现了以下内容:

.obj模型是使用“四边形”,四边形多边形生成的,但OpenGL ES只能渲染点,线和三角形。结果,每个四边形只有一半(1个三角形)被渲染。

在Blender中打开.obj文件并使用三角形导出会导致显示正确的显示。

感谢Erik Buck花时间帮助他的读者,并感谢@clayMontgomery的帮助; - )