2014-02-21 43 views
0

我正在學習使用Java的Computer Graphics。我想知道,在學習JOGL之前我應該​​學習Java2D還是應該學習JOGL(它也可以處理3D圖形)?這(我希望)不是基於意見的問題,因爲我正在尋找一條正確的道路。換個角度來看,我的問題是:如果JOGL具有Java Graphics 2D庫,那麼它有什麼意義?使用Java Graphics2D vs JOGL

注意:我的最終目標是能夠爲商業應用程序開發圖形。

+0

如果您對計算機圖形學沒有經驗,我強烈建議從'Graphics2D'開始,您可以用它做很多。當您準備嘗試更高級的想法時,包括更高級的2D和基本3D,轉到專用庫 - 恕我直言。Graphics2D是Java/Swing繪畫引擎的默認實現,它在各個平臺上進行了標準化並設計出了盒子,JOGL專門爲特定目的綁定了特定的渲染引擎。每個都有它的地方,你需要根據你的要求來決定 – MadProgrammer

回答

2

「商業應用程序」的含義並不完全清楚。你不是在談論「電腦遊戲業務」,是嗎? ;-)

嚴重:幾乎每個問題的形式「我應該使用X還是Y?」具有同種答案:

  1. 「那要看是什麼究竟你想做的事」,並
  2. 主觀的。

Graphics2D這個類是一個相當高層次的抽象,用幾行代碼就可以做你的第一次自定義繪畫操作。他們很直觀。你想用Graphics2D畫一條線?那麼,請致電graphics.drawLine(0,0,100,100);。你很快就會有成功的感覺。開始使用的基本代碼在http://docs.oracle.com/javase/tutorial/uiswing/painting/中進行了簡要總結,並且從http://docs.oracle.com/javase/tutorial/2d/geometry/index.html和一些幻想中您已經可以獲得很好的效果。

OpenGL是另一個世界。首先它的重點是3D圖形,這不是「只是2D的超集」。雖然你在技術上可以與OpenGL做2D圖形,但這不是它的目的。它更接近於硬件,專門針對具有強大(和複雜)渲染技術的大型3D對象進行高性能管理。你想用OpenGL畫一條線嗎?那麼,如果你想用純粹的,現代的(!)OpenGL來做到這一點,它將包含100行代碼,包括用GLSL編寫的你自己的着色器程序。而如果沒有數學和圖形卡的深厚背景的某些字段,並沒有閱讀精心教​​程或書籍(如http://arcsynthesis.org/gltut/),你幾乎可以在所有帶來什麼屏幕

所以總結吧,關於你的實際問題:

什麼是具有了Java 2D圖形庫,如果JOGL是周圍的點?

如果你想創造一些二維圖紙,或許有些柱狀圖,餅狀圖或折線圖,也許一些圖片,你根本就不會使用OpenGL由於其複雜性。 Java2D是標準API的一部分,它是爲這樣的事情量身定做的(當然,爲了不同的目的,仍然有不同的專用庫)。如果你想做超越2D的任何事情,或者使用一些非常複雜的渲染效果,你必須使用OpenGL。