在尝试启动并运行类似“Hello World”的基本 XServer 应用程序后,我发现无论我尝试什么,我都会遇到相同的错误,即:
X Error of Failed request: BadMAtch( invalid parameter attributes )
Major opcode of failed request: 78 ( X_CreateColormap )
起初,我以为是我的驱动,所以我将它们更新为 290.10 (nVidia)。
我的(相关)设置包括以下内容:
nVidia GTX 550 Ti
Sabayon Linux
Kernel 3.2
但是,经过一些冲浪后,似乎可能是因为我有双显示器(一个连接到 hdmi-mini 端口,另一个连接到 vga/dvi),或者我启用了 Xinerama,或两者兼而有之。
我试图通过在我的代码中创建两个对象来补偿这两个监视器GLXContext
,正如预期的那样,它没有做任何事情(很好:我刚开始学习这个 API)。我这样做是因为 GLXContext 似乎与监视器输入/输出有关。
在那之后没有用,我试过glXGetConfig
了,也没有用。因此,我开始环顾四周,并在一个论坛(几年前写的)上找到了一篇关于有人在禁用 Xinerama 时遇到问题的帖子,而这正是导致问题的原因。奇怪的是,这是在 2009 年发布的,所以人们会认为 nVidia 现在已经解决了这个问题。
我不知道该怎么做,我相信我有点搞砸了,除非我能解决这个问题。
任何人都可以在这里查看我的代码(pastebin),以及我在 SuperUser 上的帖子。
我真的可以在这方面使用一些帮助。
tl;博士
setWindowAtt.colormap = colorMap;
setWindowAtt.event_mask = ExposureMask | KeyPressMask;
win = XCreateWindow( dp, root, 0, 0, 600, 600, 0, visualInfo->depth, InputOutput, visualInfo->visual, CWColormap | CWEventMask, &setWindowAtt );
XMapWindow( dp, win );
XStoreName( dp, win, VI_UN_DEF_WIN_NAME );
glxContext = glXCreateContext( dp, visualInfo, NULL, GL_TRUE ); //error
glXMakeCurrent( dp, win, glxContext );