【问题标题】:glXChooseFBConfig fails to select supported configglXChooseFBConfig 无法选择支持的配置
【发布时间】:2013-11-19 14:59:34
【问题描述】:

我尝试在 Linux (Ubuntu 12.04 x86_64) 上使用 nvidia blob 驱动程序选择此配置:

int doubleBufferAttributes[] = {
    GLX_DRAWABLE_TYPE, GLX_PBUFFER_BIT,
    GLX_RENDER_TYPE,   GLX_RGBA_BIT,
    GLX_DOUBLEBUFFER,  True,
    GLX_RED_SIZE,      8,
    GLX_GREEN_SIZE,    8,
    GLX_BLUE_SIZE,     8,
    GLX_PBUFFER_WIDTH,  <width>,
    GLX_PBUFFER_HEIGHT,  <height>,
    GLX_DEPTH_SIZE,    24,
    GLX_ALPHA_SIZE,     8,
    None
};
glXChooseFBConfig(dpy, DefaultScreen(dpy), doubleBufferAttributes, &numReturned);

它返回 NULL。但是我可以在 glxinfo 中看到支持这种配置。实际上我自己使用glXGetFBConfigs,我可以看到匹配的fbconfig。一件奇怪的事情是,如果我为枚举匹配配置执行 glXGetVisualFromFBConfig 然后 glXGetConfig(dpy, vis, GLX_ALPHA_SIZE, &v);然后我得到 0 值,即使我刚刚验证 FBConfig 适用于 ALPHA=8。

为什么会发生这种情况?

附:我尝试调试的真正问题是我看不到使用 nvidia blob 驱动程序渲染的对象,而它们是使用 nouveau 驱动程序渲染的。如果我使用默认值(没有特定设置)执行 glXChooseFBConfig,我可以用 nouveau 重现它,所以我尝试使用配置。我尝试使用枚举的“有效”配置(在 glXCreatePbuffer 中),但仍然没有渲染。

【问题讨论】:

    标签: linux opengl nvidia glx


    【解决方案1】:

    [除了逆向工程,要回答为什么二进制 blob 做某事是一种猜测练习。然而,一个非常可能的猜测如下。]

    根据specGLX_PBUFFER_WIDTHGLX_PBUFFER_HEIGHT 不是用于选择的有效属性。尝试删除那些。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-19
      • 1970-01-01
      相关资源
      最近更新 更多