我是OpenGL的新手。我正在使用Java / JOGL。
我在使用多边形面时遇到了困难。我希望能够控制哪一侧是正面还是背面。我一直在研究这个documentation。
我认为在我的display()
方法中,这行代码会绘制所有多边形面,但它没有效果:
gl.glPolygonMode(GL.GL_FRONT_AND_BACK, GLU.GLU_LINE);
使用它,我可以翻转哪些边被渲染:
gl.glFrontFace(GL.GL_CW);
但是我的一半多边形面向一个方向,一半面向另一个方向,所以只有一半被渲染。
我尝试使用gl.glNormal3f()
设置正常,希望这与“前面”有关,但它没有效果。
我应该在这做什么?
感谢。
答案 0 :(得分:4)
前面不是法线定义的,而是顶点的顺序。从前面看多边形时,如果按照创建它们的顺序跟踪顶点,则最终会顺时针或逆时针跟踪多边形。如果从另一侧看多边形,则会以相反的方向跟踪它。
glFrontFace
设置哪个方向被视为前方。当从应该作为前方的方向查看时,确保所有顶点都以相同的顺序定义。
答案 1 :(得分:2)
也许你已经启用了剔除。如果您使用
禁用它glDisable(GL_CULL_FACE);
那么你的所有面孔都应该被光栅化,但最好确保你的多边形不在里面。