我正在尝试在Debian Stretch系统中创建一个glfw窗口.
初始化glfw的代码:
// Initialize GLFW void initGLFW() { if (!glfwInit()) { exit(EXIT_FAILURE); } glfwSetErrorCallback(errorCallback); glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0); glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_FALSE); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); glfwWindowHint(GLFW_RESIZABLE, GL_FALSE); glfwWindowHint(GLFW_OPENGL_DEBUG_CONTEXT, GL_TRUE); window = glfwCreateWindow(WINDOW_WIDTH, WINDOW_HEIGHT, "GLSL4.3 + GLM + VBO + VAO", NULL, NULL); if (!window) { fprintf(stderr, "Failed to open GLFW window.\n"); glfwTerminate(); //system("pause"); exit(EXIT_FAILURE); } }
当我运行可执行文件时,我得到上面的消息.为什么?
GLX: Failed to create context: GLXBadFBConfig Failed to open GLFW window.
跟LIBGL_DEBUG=verbose
我跑,得到这个
libGL: Can't open configuration file /home/rafael/.drirc: No such file or directory. libGL: pci id for fd 5: 8086:0a16, driver i965 libGL: OpenDriver: trying /usr/lib/x86_64-linux-gnu/dri/tls/i965_dri.so libGL: OpenDriver: trying /usr/lib/x86_64-linux-gnu/dri/i965_dri.so libGL: Can't open configuration file /home/rafael/.drirc: No such file or directory. libGL: Using DRI3 for screen 0
一些有用的信息:
$ lspci | grep VGA 00:02.0 VGA compatible controller: Intel Corporation Haswell-ULT Integrated Graphics Controller (rev 0b) $ glxinfo | grep version server glx version string: 1.4 client glx version string: 1.4 GLX version: 1.4 Max core profile version: 3.3 Max compat profile version: 3.0 Max GLES1 profile version: 1.1 Max GLES[23] profile version: 3.0 OpenGL core profile version string: 3.3 (Core Profile) Mesa 11.2.2 OpenGL core profile shading language version string: 3.30 OpenGL version string: 3.0 Mesa 11.2.2 OpenGL shading language version string: 1.30 OpenGL ES profile version string: OpenGL ES 3.0 Mesa 11.2.2 OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00
该initGLFW
函数是从main调用的第一个函数.
您正在尝试创建OpenGL 4.0 Core配置文件上下文:
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
您的驱动程序/ OpenGL实现仅支持最多3.3:
OpenGL core profile version string: 3.3 (Core Profile) Mesa 11.2.2 Max core profile version: 3.3
Mesa 11.2.2 可以支持 OpenGL 4.1但只支持某些驱动程序(来自11.0.0的发行说明):
radeonsi上的OpenGL 4.1,nvc0
Mesa 12.0.0 似乎支持 i965上的OpenGL 4.3:
nvc0,radeonsi,i965(Gen8 +)上的OpenGL 4.3
修复将是更新您的图形卡,Mesa3D或创建3.3上下文:
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);