我正在使用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()方法开始。
答案 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);