glXChooseFBConfig无法选择支持的配置

时间:2013-11-19 14:59:34

标签: linux opengl nvidia glx

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

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,&amp; v);然后我得到0值,即使我刚刚确认FBConfig是ALPHA = 8。

为什么会发生这种情况?

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

1 个答案:

答案 0 :(得分:1)

[除了逆向工程,回答为什么二进制blob做某事是一种猜测练习。但是,真正可能的猜测如下。]

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