2011-07-07 27 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