0

我“尝试”使用“Learning OpenGL ES for iOS: A Hands-on Guide to Modern 3D Graphics Programming by Erik M. Buck”一书来学习 OpenGL

我已经到了尝试在测试器应用程序中加载 3D 模型以确认我的知识的阶段,虽然我可以显示模型,但它看起来颠倒了,纹理似乎部分显示(或显示不正确)。

我已经尝试过 GL_BLEND、GL_DEPTH_TEST,使用 Ortho 不使用 Ortho 无济于事,并意识到我可能遗漏了一些不可或缺的东西……认为这可能与面部法线有关?

这是应该出现的内容:

在此处输入图像描述

这就是我得到的:

在此处输入图像描述 谁能帮忙?

谢谢

4

2 回答 2

0

我认为您的球体模型的代码假定背面剔除已禁用,或者其三角形条需要相反的缠绕方向(顺时针或逆时针)。您应该尝试按照该代码的预期正确初始化 OpenGL ES。我会试试这个:

gl.glDisable(GL10.GL_CULL_FACE);

或者

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

或者

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
于 2013-09-01T17:08:54.667 回答
0

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

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

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

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

于 2013-09-03T14:45:33.617 回答