2011-06-08 86 views
0

我正在開發一個Java遊戲。我們小組通常在Windows和Mac平臺上開發。 遊戲過程中沒有出現任何問題,我們有一個恆定幀速率60 fpsJAVA 2D遊戲Linux糟糕的FameRate

昨天我們在Linux電腦上運行我們的遊戲,幀速率爲,每秒只有約10幀

有沒有人聽說過類似的東西?在Linux上運行Java遊戲時遇到問題? 在Linux上保持良好的幀速率?

我不知道哪些代碼行(此刻超過12000)我應該告訴你,所以你可以理解我的問題。 但我會嘗試解釋一下我們的概念,所以也許你知道一個解決方案,或者你可以給我們一個提示:)

我們構建一個Content Manager服務,它加載並保存我們應該繪製的圖像JFrame。通常我們使用的是png格式的圖片。

極短的提取物:

//Load our images which are later drawn on the Frame 
URL url = this.getClass().getClassLoader().getResource(the right image Path); 
this.image = ImageIO.read(url); 

//extract of draw 
this.graphicsDevice.getGraphics().drawImage(ourImage, x , y , null); 

我們有在同一時間大約25個不同的圖像,這是JFrame的圖形設備上直接繪製。

我對Linux沒有任何經驗,所以我不理解可怕的幀率的來源。 (請記住,在Windows和Mac電腦it's常數62 fps,具有相同的代碼:()

如果有人需要更多的信息來幫助,我會嘗試添加一些。

感謝您的閱讀! 。

問候 FireDragon

+1

系統上是否有實際的JVM?你確定使用這個JVM而不是一些舊的實現嗎? – Arne 2011-06-08 12:11:18

+2

Linux上支持測試機器的圖形卡的性能如何?你可能會比較幀率與Windows或Mac,可以使用硬件加速/適當的OpenGL驅動程序... – phtrivier 2011-06-08 12:12:32

回答

1

我會問用戶遇到這樣的問題,哪個版本的X,視頻卡驅動程序和jre他正在運行,如果合成是。

在更新到更新版本的openjre後,我在相同的應用程序中經歷了RAM/CPU使用率的急劇增加。 (最新的|過時的)(專有的|免費的)驅動程序和(KDE | Gnome |任何)和(openjre | sunjre)的機器都不存在),並且軟件/硬件的每個組合都會顯示不同的結果。

我會嘗試在AMD和nVidia機器上測試應用程序,使用專有和免費的驅動程序以及openjre和sunjre瞭解導致低fps的原因。

+0

感謝您的回答,昨天晚上我們發現了問題。我們使用透明圖像,這會導致麻煩。我的一個朋友用我們的新問題做了一個新的話題:http://stackoverflow.com/questions/6290576/java2d-bufferedimage-not-accelerated-on-ubuntu – FireDragon 2011-06-09 09:21:33

+0

我相信WeGi的答案更適合你,因爲它是更具體的語言,而我的答案只是一個關於Linux中測試/故障排除應用程序的簡單信息。 – 2011-06-09 12:46:12

1

我懷疑,你沒有包括在繪畫過程中,Linux的緩衝 嘗試添加Toolkit.getDefaultToolkit()同步();你的油漆方法祝你好運

+0

感謝您的回答,昨天晚上我們發現問題的根源。我們使用透明圖像,這會導致麻煩。我的一個朋友用我們的新問題做了一個新的話題:http://stackoverflow.com/questions/6290576/java2d-bufferedimage-not-accelerated-on-ubuntu – FireDragon 2011-06-09 09:21:54

1

在兩者上分析您的代碼,以便您可以查看某個特定區域是否導致問題。

另外,比較兩臺機器的規格,如果Linux機器運行速度慢得多,可能是您的問題。

+0

感謝您的回答,昨天晚上我們發現了問題。我們使用透明圖像,這會導致麻煩。我的一個朋友用我們的新問題提出了一個新的話題:http://stackoverflow.com/questions/6290576/java2d-bufferedimage-not-accelerated-on-ubuntu – FireDragon 2011-06-09 09:22:10