Я также обнаружил, что (по крайней мере, в 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();
}