我正在学习OpenGL(特别是使用JOGL),我正在尝试创建一个直角三角形棱镜。我了解到你可以用glutWire
/ SolidCylinder
创建一个等边棱镜,并且切片数量很少(显然是三角形的3个)。
所以我想知道是否还有其他方法可以制作棱镜,或者是否有某种方法来缩放等边三角形以将其变成直角三角形?
答案 0 :(得分:0)
我还发现(至少在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();
}