LWJGL不会创建GLFW_API_UNAVAILABLE错误的窗口

时间:2016-05-14 13:58:31

标签: opengl lwjgl

我正在使用LWJGL构建游戏。

但是有一个问题。当我调用glfwCreateWindow时,LWJGL会抛出错误并且不会创建窗口。

这是输出:

[2016-05-14 22:42:04.665] [CubeSystem/INFO] Starting graphics engine...
[LWJGL] GLFW_API_UNAVAILABLE error
    Description : WGL: The driver does not appear to support OpenGL
    Stacktrace  :
        org.lwjgl.glfw.GLFW.nglfwCreateWindow(GLFW.java:1168)
        org.lwjgl.glfw.GLFW.glfwCreateWindow(GLFW.java:1251)
        Tmk.MyAdventure.System.CubeSystem.Init(CubeSystem.java:37)
        Tmk.MyAdventure.Main.main(Main.java:13)
[2016-05-14 22:42:04.740] [CubeSystem/ERROR] Cannot create window.

我不知道为什么它说驱动程序似乎不支持OpenGL。

我的电脑运行OpenGL游戏很好。此外,我更新了驱动程序到最新版本,仍然显示此消息。

当我在IDE外面运行时,我得到了同样的信息。

这是代码:

....

public class CubeSystem {
    private static Logger l = new Logger("CubeSystem");

    private static final int DEFAULT_WIDTH = 640;
    private static final int DEFAULT_HEIGHT = 480;

    private long window;

    public CubeSystem() {
    }

    public boolean Init() {
        l.Info("Starting graphics engine...");
        //Configure error stream
        GLFWErrorCallback.createPrint(System.err).set();
        if(glfwInit() != GL_TRUE) {
            l.Err("Cannot initialize GLFW.");
            return false;
        }
        //Configure window
        glfwDefaultWindowHints();
        glfwWindowHint(GLFW_VISIBLE, GLFW_TRUE);
        glfwWindowHint(GLFW_RESIZABLE, GLFW_TRUE);
        window = glfwCreateWindow(DEFAULT_WIDTH, DEFAULT_HEIGHT, "My Adventure", NULL, NULL);
        if(window == NULL) {
            l.Err("Cannot create window.");
            return false;
        }

        glfwDestroyWindow(window);
        glfwTerminate();
        glfwSetErrorCallback(null).release();

        return true;
    }
}

注意:从Init()方法开始。

1 个答案:

答案 0 :(得分:0)

我认为你缺少额外的提示。这就是我如何使用GLFW。(C ++)

 if (!glfwInit()) {

        throw;

    }
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);//using OpenGL 4.3
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_COMPAT_PROFILE);
    glfwWindowHint(GLFW_SAMPLES, 8);



#ifdef _DEBUG

    glfwWindowHint(GLFW_OPENGL_DEBUG_CONTEXT, GL_TRUE);

#else
    glfwWindowHint(GLFW_OPENGL_DEBUG_CONTEXT, GL_FALSE);

#endif

    glfwWindowHint(GLFW_RED_BITS, 8);
    glfwWindowHint(GLFW_GREEN_BITS, 8);
    glfwWindowHint(GLFW_BLUE_BITS, 8);
    glfwWindowHint(GLFW_ALPHA_BITS, 8);
    glfwWindowHint(GLFW_DEPTH_BITS, 0);
    glfwWindowHint(GLFW_STENCIL_BITS, 8);
    _glfwWin = glfwCreateWindow(winW, winH, "Display", NULL, NULL);