2013-02-20 25 views
1

在JOGL即時通訊使用GL_QUADS(即整個對象的不同組件)嘗試創建幾個3D形狀,到目前爲止它已經很好地做到這一點,但我不知道如何翻譯形狀,必須做一個方法來做到這一點,但我不是很熟悉GL_QUADS,所以我不完全確定如何去做這件事。編輯gl.glVertex3f只是導致形狀不同,這似乎是我可以編輯的唯一東西,是否可以給GL_QUAD一個變量名?JOGL - 翻譯GL_QUADS

回答

2

可以使用glTranslatef功能:

// render the shape 
gl.glTranslatef(5.0f, 0.0f, 0.0f); // translate along x, y, z 
// render the shape - you will now have two shapes next to each other
+0

感謝您的答覆,我問以前試過,但它從來沒有什麼了嗎?這是因爲我有'公共無效顯示(GLAutoDrawable可繪製){'有很多'glBegin'? – thrash 2013-02-20 15:52:04

+1

如果將其放在'glBegin' ...'glEnd'中,該命令無效。它必須在'glBegin'之前調用。只有少數JOGL/OpenGL命令在'glBegin'內有效......'glEnd':http://www.glprogramming.com/red/chapter02.html如果這樣做沒有幫助,那麼最好的辦法是如果可以的話發佈你的源代碼。 – gcvt 2013-02-20 15:56:09

+0

將它放在'glBegin'之前,非常感謝! – thrash 2013-02-20 15:58:34

1

調用gl.glTranslatef(1.0f, 0.0f, 0.0f);將適用於當前矩陣堆棧中,有效地意味着,無論你從畫然後會一起出現1個單元在x軸上從什麼該矩陣之前(可能是你的情況下的原點)。

我明白爲什麼這似乎令人困惑,而不是創建形狀然後移動它(不能這樣做,它已經繪製),你會想再轉換成繪製你的形狀。

例如:

gl.glPushMatrix(); 
    gl.glTranslatef(1.0f, 0.0f, 0.0f); 
    gl.glBegin(GL2.GL_QUADS); 
     // draw some vertices here 
    gl.glEnd(); 
gl.glPopMatrix();