LWJGL и Slick2D 64 бит

Я пытаюсь скомпилировать программу в LWJGL и Slick2D, используя 64-битный JDK 8u60. Однако, когда я не добавляю туземцев, он говорит, что отсутствует lwjgl64. Когда я импортирую родные файлы lwjgl64.dll, возникает ошибка времени выполнения, указывающая, что мой формат пикселей не ускорен. Я читал другие источники, и люди говорили, что мне нужно установить более новые драйверы. Однако я проверил наличие новых обновлений и не нашел их. При использовании 32-битного JDK 8u60 нет ошибки времени выполнения и нет необходимости указывать собственные. Может ли кто-нибудь помочь мне исправить это? Я бы предпочел не устанавливать 32-разрядную версию JDK 8u60 вместо 64-разрядной.

Вот мой код

package dungeon.main;

import org.newdawn.slick.AppGameContainer;
import org.newdawn.slick.BasicGame;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.SlickException;

public class Main extends BasicGame {
private static int width = 1200;
private static int height = 800;
private static boolean fullscreen = false;
private static int targetFramerate = 120;
private static boolean showFramerate = true;
public static void main(String[] args) {
    try {
        AppGameContainer appGameContainer = new AppGameContainer(new Main("Dungeon")); 
        appGameContainer.setDisplayMode(width, height, fullscreen); 
        appGameContainer.setTargetFrameRate(targetFramerate); 
        appGameContainer.setShowFPS(showFramerate); 
        appGameContainer.start(); 
    } catch (SlickException e) {
        e.printStackTrace();
    }
}
public Main(String title) {
    super(title);
    // TODO Auto-generated constructor stub
}
@Override
public void init(GameContainer arg0) throws SlickException {
    // TODO Auto-generated method stub

}
@Override
public void update(GameContainer arg0, int arg1) throws SlickException {
    // TODO Auto-generated method stub

}
@Override
public void render(GameContainer arg0, Graphics arg1) throws SlickException {
    // TODO Auto-generated method stub

}
}

Вот ошибка

Tue Oct 06 09:03:57 EDT 2015 INFO:Slick Build #237
Tue Oct 06 09:03:57 EDT 2015 INFO:LWJGL Version: 2.9.2
Tue Oct 06 09:03:57 EDT 2015 INFO:OriginalDisplayMode: 1600 x 900 x 32 @60Hz
Tue Oct 06 09:03:57 EDT 2015 INFO:TargetDisplayMode: 1200 x 800 x 0 @0Hz
Tue Oct 06 09:03:57 EDT 2015 ERROR:Pixel format not accelerated
org.lwjgl.LWJGLException: Pixel format not accelerated
    at org.lwjgl.opengl.WindowsPeerInfo.nChoosePixelFormat(Native Method)
    at org.lwjgl.opengl.WindowsPeerInfo.choosePixelFormat(WindowsPeerInfo.java:52)
    at org.lwjgl.opengl.WindowsDisplay.createWindow(WindowsDisplay.java:253)
    at org.lwjgl.opengl.Display.createWindow(Display.java:306)
    at org.lwjgl.opengl.Display.create(Display.java:848)
    at org.lwjgl.opengl.Display.create(Display.java:757)
    at org.newdawn.slick.AppGameContainer.tryCreateDisplay(AppGameContainer.java:302)
    at org.newdawn.slick.AppGameContainer.access$000(AppGameContainer.java:34)
    at org.newdawn.slick.AppGameContainer$2.run(AppGameContainer.java:367)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.newdawn.slick.AppGameContainer.setup(AppGameContainer.java:348)
    at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:317)
    at dungeon.main.Main.main(Main.java:21)
org.newdawn.slick.SlickException: Failed to initialise the LWJGL display
    at org.newdawn.slick.AppGameContainer.setup(AppGameContainer.java:378)
    at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:317)
    at dungeon.main.Main.main(Main.java:21)

person JavaFreak    schedule 06.10.2015    source источник


Ответы (1)


Если вы делаете это иначе, чем этот, попробуйте установить туземцев по этим строкам.

System.setProperty("org.lwjgl.librarypath", new File(new File(System.getProperty("user.dir"), "native"), LWJGLUtil.getPlatformName()).getAbsolutePath());
System.setProperty("net.java.games.input.librarypath", System.getProperty("org.lwjgl.librarypath"));

Затем вставьте нативы в /yourgamefolder/natives/windows/...

Чтобы запустить lwjgl, даже когда «Формат пикселей не ускорен», вы можете включить программный режим.

System.setProperty("org.lwjgl.opengl.Display.allowSoftwareOpenGL", "true"); 

(однако программный рендеринг очень медленный)

person Unlox    schedule 07.10.2015
comment
Я попробовал ваш метод ввода, чтобы установить туземцев с помощью кода, но это не сработало и привело к той же ошибке, что и раньше. Программный рендеринг работал, но, к сожалению, это не то, что мне нужно. Мне нужен аппаратный рендеринг с 64-битным JDK - person JavaFreak; 07.10.2015
comment
Я использую 64-битный JDK 7, и все работает нормально. Проверьте это еще раз с java 7. Если вы продолжаете сталкиваться с этой проблемой, она будет связана с нативными библиотеками. - person Unlox; 07.10.2015
comment
Вот уроженцы lwjgl, которые работают для меня с гладким speedyshare.com/s9NWR/native.zip - person Unlox; 07.10.2015
comment
Хорошо, я попробую ваши родные. Однако я хочу сказать, что я должен иметь возможность использовать 64-разрядную версию JDK 8. Но я не могу, и я не знаю, почему - person JavaFreak; 07.10.2015
comment
Это все еще не работает. Возможно, просто lwjgl и slick2D недостаточно обновлены для использования JDK 8. - person JavaFreak; 07.10.2015
comment
Я не думаю, что проблема связана с JDK 8. Для теста я запускаю один из примеров slick2d с JDK 8 64bit (1.8.0_60), и все работает очень хорошо. - person Unlox; 07.10.2015
comment
Хорошо, так в чем, по-вашему, проблема? Должен ли я просто сделать новую установку JDK и получить новую копию slick2d? - person JavaFreak; 08.10.2015
comment
Я попытался загрузить новую копию slick2d и удалить/переустановить JDK 8 64 бит, и это все еще не работает. Использование программного рендеринга не вариант. @Разблокировать - person JavaFreak; 09.10.2015