更新GPU驱动程序后OpenGL支持中断

时间:2017-01-25 03:35:48

标签: java opengl libgdx lwjgl

在EVGA GTX 1080 FTW上将NVidia驱动程序更新为378.49后,我开始使用libGDX获取此异常。

Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: OpenGL is not supported by the video driver.
    at com.badlogic.gdx.backends.lwjgl.LwjglGraphics.createDisplayPixelFormat(LwjglGraphics.java:229)
    at com.badlogic.gdx.backends.lwjgl.LwjglGraphics.setupDisplay(LwjglGraphics.java:174)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:138)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:120)
Caused by: 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 com.badlogic.gdx.backends.lwjgl.LwjglGraphics.createDisplayPixelFormat(LwjglGraphics.java:220)
    ... 3 more

OpenGL Extensions Viewer显示我的GPU上可以使用OpenGL 4.5版。

我已经尝试强制jrm可执行文件在我的NVidia GPU上运行(它们实际上是在运行它,但我只是想确保)

其他基于OpenGL的应用运行良好。另外,我试图从Steam运行一个已编译的libGDX游戏,它似乎运行得很好。

我尝试使用不同Java版本的不同JRM。我执行了一个干净的驱动程序重新安装并重启了几次。

Android Studio和IntelliJ都会出现异常。

config.allowSoftwareMode = true;不起作用(并且不应该)。当libGTX需要2.0时,Windows仅支持OpenGL 1.1的软件渲染。

2 个答案:

答案 0 :(得分:3)

我有同样的问题。

Exception in thread "LWJGL Application" 
com.badlogic.gdx.utils.GdxRuntimeException: OpenGL is not supported by the video driver.
我刚从Nvidia 376.33下载并安装了以前的驱动程序,它解决了我的问题(Windows 10 64位)。

答案 1 :(得分:2)

我们最近受到新NVIDIA驱动程序崩溃的影响,特别是3dVision导致java和LWJGL。

我尝试了一切,我终于找到了如何彻底解决问题,所以我想分享我的发现。

该错误分为两个阶段。一个是由驱动程序本身引起的,一个是由3dVision引起的。驱动程序本身停止使用OpenGL初始化函数导致" Pixelformat未加速",3dVision甚至可能在非LWJGL函数上崩溃,例如GraphicsEnvironment.getLocalGraphicsEnvironment()。getDefaultScreenDevice()。

听起来很奇怪,解决方法是严格使用javaw.exe而不是java.exe for windows。我知道唯一的区别是javaw以WINDOW子系统为目标,而java则以CONSOLE子系统https://msdn.microsoft.com/en-us/library/fcc1zstk.aspx?f=255&MSPPError=-2147217396为目标,但由于某种原因,它解决了崩溃问题。

虽然这是一个问题。使用" javaw"不会解决问题。必须直接调用可执行文件。只需调用" javaw"在安装了java的系统上,它将调用位于system32或C:\ ProgramData中的虚拟javaw.exe。该虚拟文件将命令委托给最新的java安装。如果发生这种情况,将发生崩溃。

如果您有崩溃测试程序,可以尝试使用" javaw -jar test.jar"执行它。和" C:\ PathToJavaHome \ bin \ javaw.exe -jar test.jar"。第一个会崩溃,第二个会崩溃。