2011-09-06 118 views
3

使用JOGL,作爲一個項目基本上我學習的openGL幫助我學習,我要做一個簡單的遊戲,但在此之前,我想畫一個正方形和移動相機與周圍的箭頭鍵。Java JOGL:如何使用GL和圖形創建圖像?

,因爲我不是很好用OpenGL實現我做了它使用awt.Graphics和緩衝圖像,它繪製到GLCanvas中一個小菜單。然後當我選擇一個按鈕時,它使用javax.media.opengl.GL呈現遊戲(當前只是方形)。

此設立的作品完美,以呈現給GLCanvas中的兩種方法之間的切換。一個或另一個可以畫到畫布上,使我能夠利用當前的Java圖形知識創建複雜的2D菜單,並切換到JOGL GL以學習3D圖形。

,但它是一個或完全豬屏幕另一方面,

所以,問題是我怎麼可以創建在屏幕上的圖像是兩者的混合物? I.e我怎麼能讓我的3D立方體在屏幕上快樂地旋轉,並在Java Graphics繪製的頂部有一個菜單欄?我如何讓他們畫到相同的對象/東西,所以我只是粘貼菜單的2D圖像通過3D

如果這是不可能的,我會簡單地使用鍵盤命令,直到我有足夠的信心與GL直接用它創建菜單。

如果你wan't看到我的任何代碼,我可以編輯這個職位,但我看不出它如何能是有幫助的(但你可能,所以請詢問)

非常感謝

回答

2

你絕對正確,你不能在一個面板中混合使用JOGL和Java2D。所以你將不得不做一些技巧。

如果這兩個佔據屏幕的不同區域,如菜單和動畫的畫布,你也許能夠只創建兩個獨立的面板 - 一個用於Java2D的,一個用於JOGL。它們不能重疊,但它們可以坐在一起並看起來像是同一個窗口的一部分。

如果您需要在同一個面板混合JOGL和Graphics2D的重疊,最簡單的方法是使用GLPBuffer。 GLPBuffer是GLDrawable的屏幕外區域。您將JOGL渲染到它,然後從中創建一個位圖,並使用Java2D將該位圖繪製到窗口。有關更多信息,請參閱this question。這樣做你會受到輕微的性能影響,但可能不如你想象的那麼高。

如果您確實需要在最終快速的性能相同的面板你將不得不使用JOGL繪製一切混合2D和3D。您將不得不重新學習如何使用JOGL而不是Java2D繪製菜單。在好處上,你可能會看到略微的性能提升。而且你將成爲深入瞭解OpenGL的少數非常酷的人之一。

+0

感謝一束,終於通過使用圖形每幀寫入到緩衝的圖像,然後將其轉換成一個紋理我映射到四元,其是在一個固定的位置相比,相機固定它:d – Troyseph

+0

該工程太。我應該提到它。 – DJClayworth