2011-07-07 32 views
0

因此,在64位的Ubuntu上,我使用LWJGL進行開發,但是在Windows(和Mac,儘管我已經測試的更少)上運行良好的代碼在我的新機器上出現問題。64位Ubuntu(ATI圖形卡)上的LWJGL問題;與X窗口系統衝突?

基本上,如果我嘗試初始化全屏模式,應用程序最終會在一個窗口而不是接管視圖,性能很慢(大約是應該的1/2到1/3)。

有趣的是,很少(大約5%的時間)一切正常,性能很好。

在對Google進行了一些研究後,看起來這是由於X Windowing系統的問題。我發現一篇文章here,建議在設置其他任何東西之前調用應用程序中的XInitThreads()。不幸的是,我該如何撥打電話?

我意識到,我可以使用

Process p = Runtime.getRuntime().exec("The system command goes here"); 

執行系統命令,但我不知道要使用的命令。

回答

1

不幸的是,您無法通過exec解決您的問題。進程 - 在這種情況下,即JVM進程 - 必須進行該調用。您引用的鏈接描述了JVM未實現的不幸事實。你可以自己介紹這一點的可能性不大。

與X API交談是JVM的基本活動:這就是AWT在此環境中的實現方式。由於JVM已經在使用X與顯示器進行通信,因此不能只引入一點額外的呼叫。放置該調用的必要位置位於JVM中的X init代碼的中間。

OpenJDK是開源的。你可能做你自己的版本,但我不能推薦。

+0

嗯。在代碼中沒有辦法做到這一點?我無法告訴JVM進程自己發出命令?或者這是一個安全功能? – CodeBunny