在OpenGL中创建直角三棱柱体

在OpenGL中创建直角三棱柱体,opengl,geometry,jogl,Opengl,Geometry,Jogl,我正在学习OpenGL(特别是使用JOGL),并试图创建一个直角三棱柱。我了解到,可以使用glutWire/SolidCylinder和少量切片(显然,三角形为3片)创建等边棱镜 所以我想知道是否有其他方法来制作棱柱体,或者是否有其他方法来缩放等边三角形以将其变成直角三角形?我还发现(至少在JOGL中,不知道其他地方)圆柱体不能正常工作-端板的旋转角度与侧面不同,给你一个非常奇怪的形状 所以,我最后制作了一个方法,创建一个单位的直角三棱柱,然后根据需要旋转和缩放。可能有更好的方法可以做到这一点,

我正在学习OpenGL(特别是使用JOGL),并试图创建一个直角三棱柱。我了解到,可以使用
glutWire
/
SolidCylinder
和少量切片(显然,三角形为3片)创建等边棱镜

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

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

所以,我最后制作了一个方法,创建一个单位的直角三棱柱,然后根据需要旋转和缩放。可能有更好的方法可以做到这一点,因此欢迎评论:

 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();
}

除了OpenGL 3中所有这些调用都不推荐之外,我认为在线框的情况下,您需要的是LINELOOP,而不是LINES(尽管冗余可能会导致所有边都保存一个输出),这是一种非常简单明了的方法。OpenGL 3与这些调用等价的是什么?