0
我正在學習OpenGL(具體地說,使用JOGL),並試圖創建一個直角三角棱鏡。我知道你可以用glutWire
/SolidCylinder
創建一個等邊棱鏡,並且可以創建少量的切片(顯然,三角形爲3)。在OpenGL中創建一個直角三角棱鏡
所以我想知道是否還有其他方法來製作棱鏡,或者如果有某種方法可以縮放等邊三角形以將其變成直角三角形?
我正在學習OpenGL(具體地說,使用JOGL),並試圖創建一個直角三角棱鏡。我知道你可以用glutWire
/SolidCylinder
創建一個等邊棱鏡,並且可以創建少量的切片(顯然,三角形爲3)。在OpenGL中創建一個直角三角棱鏡
所以我想知道是否還有其他方法來製作棱鏡,或者如果有某種方法可以縮放等邊三角形以將其變成直角三角形?
我另外發現(至少在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();
}
除了一個事實,即所有的呼叫都在OpenGL 3棄用,我想你想LINELOOP,沒有線,線框的情況下(雖然冗餘可能會導致所有的邊沿保存一個輸出),這是一個非常明確的直接方法。 – 2010-10-11 01:44:08
與這些調用等價的OpenGL 3是什麼? – dimo414 2010-10-12 18:20:53