基本的な「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
しかし、ネットサーフィンをしてみると、デュアル モニター (1 つは hdmi-mini ポートに接続され、もう 1 つは vga/dvi) があるか、Xinerama が有効になっているか、またはその両方の可能性があるようです。
コード内に2 つのオブジェクトを作成して、両方のモニターを補おうとしましたGLXContext
が、予想どおり、何もしませんでした (良いことに、この API の学習を始めたばかりです)。これを行ったのは、GLXContext がモニターの入出力に関係しているように見えたからです。
それがうまくいかなかった後、試してみましたglXGetConfig
が、それもうまくいきませんでした。それで、私はもっと周りを見回し始め、Xinerama を無効にすることで問題を抱えている人についてのフォーラム (数年前に書かれた) で、それが問題の原因であるという投稿を見つけました。奇妙なことに、これは 2009 年に投稿されたものであり、nVidia がこれを修正したと思われるかもしれません。
私は何をすべきか途方に暮れており、これを修正できない限り、私は何らかの方法で失敗していると思います。
誰でもここ(pastebin) で私のコードを表示でき、SuperUser に関する私の投稿もここで見ることができます。
私は本当にこれでいくつかの助けを借りることができました.
tl;dr
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 );