После попытки запустить базовое XServer-приложение, похожее на Hello World, я обнаружил, что, что бы я ни пытался, я продолжаю сталкиваться с одной и той же ошибкой:
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 здесь .
Я мог бы действительно помочь с этим.
Т.Л., др
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 );