0

我是 OpenGL 的新手。我正在使用 Java/JOGL。

我对多边形面有困难。我希望能够控制哪一侧是正面或背面。我一直在研究这个文档

我认为在我的方法中,这行代码display()会使所有多边形面都被绘制出来,但它没有任何效果:

gl.glPolygonMode(GL.GL_FRONT_AND_BACK, GLU.GLU_LINE);

使用它,我可以翻转渲染哪些面:

gl.glFrontFace(GL.GL_CW);

但是我的多边形有一半面向一个方向,一半面向另一个,所以只有一半被渲染过。

我尝试使用gl.glNormal3f()设置正常,希望这与“正面”有关,但它没有效果。

我应该在这里做什么?

谢谢。

4

2 回答 2

4

前面不是由法线定义的,而是由顶点的顺序定义的。从前面看多边形时,如果您按照顶点的创建顺序跟踪顶点,您最终会顺时针或逆时针跟踪多边形。如果你从另一边看多边形,你会朝相反的方向追踪它。

glFrontFace设置哪个方向被认为是前面。确保从应该是前面的方向查看时,所有顶点都以相同的顺序定义。

于 2010-09-18T18:53:44.157 回答
2

也许你启用了剔除。如果你禁用它

glDisable(GL_CULL_FACE);

那么你所有的脸都应该被光栅化,但最好确保你的多边形不是由内而外。

于 2010-09-18T19:01:41.600 回答