代码之家  ›  专栏  ›  技术社区  ›  dimo414

在OpenGL中创建直角三角棱镜

  •  0
  • dimo414  · 技术社区  · 15 年前

    glutWire / SolidCylinder

    所以我想知道是否有其他方法来制作棱镜,或者有什么方法来缩放等边三角形,将其变成直角三角形?

    1 回复  |  直到 9 年前
        1
  •  0
  •   dimo414    15 年前

    我还发现(至少在JOGL中,不知道其他地方)glutSolidCylinder不能正常工作-端板的旋转角度不同于侧面,给你一个非常奇怪的外形。

     private void unitTriangularPrism(GL gl, boolean solid){
        // back endcap
        gl.glBegin(solid ? GL.GL_TRIANGLES : GL.GL_LINES);
        gl.glVertex3f(1f, 0f, 0f);
        gl.glVertex3f(0f, 0f, 0f);
        gl.glVertex3f(0f, 1f, 0f);
        gl.glEnd();
    
        // front endcap
        gl.glBegin(solid ? GL.GL_TRIANGLES : GL.GL_LINES);
        gl.glVertex3f(1f, 0f, 1f);
        gl.glVertex3f(0f, 0f, 1f);
        gl.glVertex3f(0f, 1f, 1f);
        gl.glEnd();
    
        // bottom
        gl.glBegin(solid ? GL.GL_QUADS : GL.GL_LINES);
        gl.glVertex3f(0f, 0f, 0f);
        gl.glVertex3f(1f, 0f, 0f);
        gl.glVertex3f(1f, 0f, 1f);
        gl.glVertex3f(0f, 0f, 1f);
        gl.glEnd();
    
        // back
        gl.glBegin(solid ? GL.GL_QUADS : GL.GL_LINES);
        gl.glVertex3f(0f, 0f, 0f);
        gl.glVertex3f(0f, 1f, 0f);
        gl.glVertex3f(0f, 1f, 1f);
        gl.glVertex3f(0f, 0f, 1f);
        gl.glEnd();
    
        // top
        gl.glBegin(solid ? GL.GL_QUADS : GL.GL_LINES);
        gl.glVertex3f(0f, 1f, 0f);
        gl.glVertex3f(1f, 0f, 0f);
        gl.glVertex3f(1f, 0f, 1f);
        gl.glVertex3f(0f, 1f, 1f);
        gl.glEnd();
    }