当前位置:  开发笔记 > 编程语言 > 正文

GLFW无法创建窗口:"GLX:无法创建上下文:GLXBadFBConfig"

如何解决《GLFW无法创建窗口:"GLX:无法创建上下文:GLXBadFBConfig"》经验,为你挑选了1个好方法。

我正在尝试在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调用的第一个函数.



1> SurvivalMach..:

您正在尝试创建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);


好吧,Haswell是gen7,即使最新的mesa代码库还没有支持gen7上的GL4.x,仍然缺乏64位浮点支持.但另一方面,许多应用程序并没有使用这种功能,而mesa确实通过扩展提供了大量的4.x功能,这可能会或可能不足以满足您的需求.
推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有