2011-07-21 50 views
7

我一直在用Windows設計Java遊戲。它在我的筆記本電腦和其他一些系統上運行得非常好,但在很多其他系統上(即使是Mac和Windows中的一些較新的系統),動畫的速度都非常慢。如何解決不同計算機之間的Java 2D性能差異?

我發現User Interface Toolkits for Java是迄今爲止最好的資源,但一直未能做出重大改進。我正在使用AWT/Swing庫。

問:
看着my game,(<有1.5Mb),怎麼會是上(類似規格的)某些計算機的性能似乎是顯著少,這是我的筆記本電腦是什麼?整個應用程序是事件驅動的,我已經完成了大部分優化,我認爲可以通過實施來完成。

我有一種感覺,它是記憶相關的。我創建(兼容),然後在開始時將所有圖像存儲到數組中,然後在那裏引用它們。

注意:我決定製作這款遊戲​​,以便我可以學習和實踐一些新想法,所以我不只是試圖分享它 - 我真的很想知道這裏發生了什麼。

+0

你能隔離一段代碼並分享嗎?此外,您是否想過在每個平臺上創建[兼容圖像](http://download.oracle.com/javase/6/docs/api/java/awt/GraphicsConfiguration.html#createCompatibleImage%28int,%20int%29) ? – Rom1

+0

@ Rom1:檢查編輯。 – rtheunissen

+0

糾正我,如果我錯了,但這個代碼在遊戲啓動時只被調用一次,準備一套卡?假設啓動不是問題,遊戲中實際繪製卡片的代碼在哪裏? – Rom1

回答

5

在並非所有操作系統上,Java 2D渲染管線都支持GPU的硬件加速。這取決於你使用的Java實現。

甲骨文Java SE 7實現(即月末推出)的新功能之一是:XRender pipeline for Java 2D這意味着它將在Linux上具有更好的性能的2D圖形。

對於Windows,在Java SE 6 update 10中,通過使用Direct3D硬件加速(source),使Java 2D的性能更佳,並進行了一些改進。

+0

感謝您的支持,對於大多數人來說,我還是比較新的,但是如果軟件不使用硬件加速,那麼大部分工作是由CPU完成的,而不是由GPU完成的嗎? – rtheunissen

+0

是的,這意味着一切都是在CPU上運行的軟件中完成的,而不是使用GPU中的特殊硬件來執行諸如複製窗口內容等操作。 – Jesper

+0

然而,無論如何不要通過GPU來移植所有渲染似乎是不合邏輯的(原諒這些中的一些天真的問題請) – rtheunissen

3

對於Mac,你應該嘗試的系統化子性質和呈現提示描述in this document,特別是告訴Java中使用本地石英渲染器,而不是太陽渲染的一個。

+0

會有這種影響嗎? 'System.setProperty(「apple.awt.graphics.UseQuartz」,「true」);' – rtheunissen

+0

是的,那將是第一次嘗試。 –

+0

再次感謝+1。 – rtheunissen

3

..爲什麼在某些電腦上的性能似乎至少是筆記本電腦的一半?

視頻驅動程序。很久以前,我參與了usenet上的一個線程,其中類似規格的機器在渲染速度方面存在顯着差異。最終得出的結論是有些機器使用過時的視頻驅動程序,這是造成差異的根本原因。

如果事實證明是這種情況,那麼最好的辦法是做一個渲染測試。檢查FPS,如果它太低,建議用戶更新驅動程序。

+1

對我的伴侶的新Macbook Pro來說,它在Mac OSX上的速度非常慢,但在他的Windows 7分區上運行相同的.jar非常流暢。這是非常新的,他幾個月前買了它。兩者都運行最新的JRE更新。所以我認爲這裏的主要問題是java如何在不同的操作系統上運行。雖然我想我可能會做一個測試,無論如何檢查你的建議。謝謝。 – rtheunissen

1

試着在探查器中彈出它,看看會發生什麼。我會在Windows和Mac上執行此操作,然後比較問題的具體位置。 JProfiler是我的最愛,但YourKit也不錯。你可以得到30天的試用版本,應該有足夠的時間來弄清楚。

這可能是圖形硬件相關的硬件加速與軟件,因爲在這個線程上註明的Mac和Windows之間有這樣的區別。

+0

我會試試看,讓你知道我看到了什麼。謝謝。 – rtheunissen

相關問題