1

次のように X サーバーへの接続を確立しています。

display = XOpenDisplay(NULL);
screen = DefaultScreen(display);
depth = DefaultDepth(display, screen);

なぜ「深さ」が常に 24 に設定されているのか疑問に思っています。合成をオフにすると 24 しかないと思いますが、実際には、合成をオンにしても 24 のままです。したがって、32 ビットの ARGB ビジュアルを取得するには、最初に深度を明示的に 32 に設定して XGetVisualInfo() を呼び出す必要があります。

ここで私の質問に: DefaultDepth() は一般に 24 を超えることはありませんか、それとも私のシステムだけですか? (私のグラフィックボードはやや古いです...)。CLUT ディスプレイの場合は 15、16、または 8 を返す可能性があることはわかっていますが、32 を返すことはできますか? それとも、ARGB 32 ビット ビジュアルを取得するために常に最初に XGetVisualInfo() を使用する必要がありますか?

ありがとう、

アンディ

4

2 に答える 2

2

XプロトコルのDefaultDepthは、色深度を指します。アルファは含まれていません。これはちょっと醜いですが、それは20年以上の非コンポジット対応アプリが想定していることです。

はい、24を超える値を返すことができます。深さ30の表示は一般的ではありませんが、存在します。

于 2011-05-23T16:09:16.440 に答える
0

xorg.conf の「画面」セクションに「DefaultDepth」パラメータがあります。変更してみてください。

深さはroot_depthフィールドから検出されます: http://www.google.com/codesearch?hl=en&safe=off&q=root_depth&aq=f&aqi=g-sx10&aql=&oq=&gs_rfai=

于 2010-05-16T04:23:05.737 に答える