LWJGL自动原生select器

在LWJGL(我在Mac上),我正在制作一个程序,但是当我debugging/运行我的代码时,它需要运行LWJGL OS X本机。

对于Windows,Linux或其他任何东西都一样,但是我希望它有点像在LWJGL中制作的Minecraft游戏。

你开始游戏,它会自动select你的操作系统的本地人。

有没有办法可以做到这一点,所以我不必在不同的操作系统上手动切换?

请分享你的来源,如果你知道!

看看这个: http : //wiki.lwjgl.org/wiki/Distributing_Your_LWJGL_Application.html 。

它说,你可以通过在main方法的开头调用下面的代码来设置你的本地路径:

System.setProperty("org.lwjgl.librarypath", path); 

通过执行一些操作系统检测,您应该能够加载正确的本机,如下所示:

 if (System.getProperty("os.name").contains("Windows")) { // Windows System.setProperty("org.lwjgl.librarypath", new File("lwjglFolderLocation/native/windows").getAbsolutePath()); } else if (System.getProperty("os.name").contains("Mac")) { // Mac OS X System.setProperty("org.lwjgl.librarypath", new File("lwjglFolderLocation/native/macosx").getAbsolutePath()); } else if (System.getProperty("os.name").contains("Linux")) { // Linux System.setProperty("org.lwjgl.librarypath", new File("lwjglFolderLocation/native/linux").getAbsolutePath()); } else if (System.getProperty("os.name").contains("Sun")) { // SunOS (Solaris) System.setProperty("org.lwjgl.librarypath", new File("lwjglFolderLocation/native/solaris").getAbsolutePath()); } else { throw new RuntimeException("Your OS is not supported"); } 

从LWJGL 3开始,有一个SharedLibraryLoader可以为你处理正确的本地文件。 它从类路径中的jar中提取本地文件,例如,可以将所有本机文件捆绑到一个jar文件中,或者为每个本地文件提供一个单独的jar文件。

jar必须放在classpath中,所以当你将程序作为一个可执行的jar分发时,你必须正确设置Class-Path清单属性。

加载器应该是默认激活的,但是你可以明确地激活它

 Library.initialize(); 

它通过从jar中提取本地文件到一个临时目录并从那里加载。 如果需要,可以通过SHARED_LIBRARY_EXTRACT_DIRECTORYSHARED_LIBRARY_EXTRACT_PATH Configuration属性更改临时目录名称和路径。