2015-05-10 101 views
1

当我制作一个简单的窗口时,它给了我一个错误,我不知道为什么!我在Linux Mint 64位。 (戴尔Inspiron 1764)窗口打开错误?

这里的错误:

org.lwjgl.LWJGLException: X Error - disp: 0x7f81187c9a20 serial: 93 error: GLXBadFBConfig request_code: 156 minor_code: 34 
at org.lwjgl.opengl.LinuxDisplay.globalErrorHandler(LinuxDisplay.java:321) 
at org.lwjgl.opengl.LinuxContextImplementation.nCreate(Native Method) 
at org.lwjgl.opengl.LinuxContextImplementation.create(LinuxContextImplementation.java:51) 
at org.lwjgl.opengl.ContextGL.<init>(ContextGL.java:132) 
at org.lwjgl.opengl.Display.create(Display.java:850) 
at org.lwjgl.opengl.Display.create(Display.java:797) 
at renderEngine.DisplayManager.createDisplay(DisplayManager.java:27) 
at engineTester.MainGameLoop.main(MainGameLoop.java:10) 

Exception in thread "main" java.lang.IllegalStateException: Cannot determine close requested state of uncreated window 
at org.lwjgl.opengl.Display.isCloseRequested(Display.java:549) 
at engineTester.MainGameLoop.main(MainGameLoop.java:14) 

这里是我的代码:

package engineTester; 

import org.lwjgl.opengl.Display; 

import renderEngine.DisplayManager; 

public class MainGameLoop { 

public static void main(String[] args) { 
    DisplayManager.createDisplay(); 

     while(!Display.isCloseRequested()) { 
      //game logic 
      //render 
      DisplayManager.updateDisplay(); 
     } 

     DisplayManager.closeDisplay(); 
    } 

} 

然后其他类:

package renderEngine; 

import org.lwjgl.LWJGLException; 
import org.lwjgl.opengl.ContextAttribs; 
import org.lwjgl.opengl.Display; 
import org.lwjgl.opengl.DisplayMode; 
import org.lwjgl.opengl.GL11; 
import org.lwjgl.opengl.PixelFormat; 
import org.lwjgl.test.applet.OpenGL; 

public class DisplayManager { 

private static final int WIDTH = 1000; 

private static final int HEIGHT = 700; 

private static final int FPS_CAP = 120; 

public static void createDisplay() { 

    ContextAttribs attribs = new ContextAttribs(3,2); 
     attribs.withForwardCompatible(true); 
     attribs.withProfileCore(true); 

     try { 
      Display.setDisplayMode(new DisplayMode(WIDTH, HEIGHT)); 
      Display.create(new PixelFormat(), attribs); 
      OpenGL opengl = new OpenGL(); 
      GL11.glViewport(0, 0, WIDTH, HEIGHT); 
     } catch (LWJGLException e) { 
      e.printStackTrace(); 
     } 
    } 

    public static void updateDisplay() { 
     Display.sync(FPS_CAP); 
     Display.update(); 
    } 

    public static void closeDisplay() { 

     Display.destroy(); 

    } 

} 
+1

尝试谷歌搜索 “GLXBadFBConfig”,有解释相关。例如:https://www.opengl.org/discussion_boards/showthread.php/183084-X-Error-of-failed-request-GLXBadFBConfig –

+0

我看了文章,但他们没有想法如何解决它! :( –

+0

是你的linux上可用的3.2上下文?显示模式应该可能是你的硬件预定义的可用分辨率之一,不确定 –

回答

0

后,在这么多的工作,我终于决定阅读Minecraft的源代码,看看他们是如何创建他们的OpenGL窗口的。我把它放在我的代码中,现在窗口完美地打开了!

得到它的工作,如果你有问题,请更换

Display.create(new PixelFormat(), attribs);

Display.create(new PixelFormat().withDepthBits(24));