代码之家  ›  专栏  ›  技术社区  ›  Nick Heiner

OpenGL:选择哪个多边形面是向前的?

  •  0
  • Nick Heiner  · 技术社区  · 14 年前

    我刚接触OpenGL。我正在使用Java/JOGL。

    documentation .

    我以为这行代码 display() 方法,将绘制所有多边形面,但没有效果:

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

    使用此选项,我可以翻转渲染的面:

    gl.glFrontFace(GL.GL_CW);
    

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

    我试过用 gl.glNormal3f() 设置正常,希望这将有什么关系,这是“前线”,但它没有任何效果。

    我应该在这里干什么?

    谢谢。

    2 回复  |  直到 14 年前
        1
  •  4
  •   Matti Virkkunen    14 年前

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

    glFrontFace

        2
  •  2
  •   Josh Lee ZZ Coder    14 年前

    也许你已经启用了剔除。如果你用

    glDisable(GL_CULL_FACE);
    

    然后你所有的脸都应该被光栅化,但最好的办法是确保你的多边形不是由内向外的。