2010-05-15 13 views
1

Je suis d'établir une connexion au serveur X comme ceci:Visuels X11 et ARGB: DefaultDepth() ne renvoie-t-il jamais 32?

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

Je me demande maintenant pourquoi la « profondeur » est toujours à 24. Je pense qu'il est seulement 24 lorsque la composition est désactivé , mais en fait, il est encore 24 même quand j'allume le compositing. Donc, pour obtenir un visuel ARGB 32 bits, je dois d'abord appeler XGetVisualInfo() avec la profondeur définie explicitement à 32.

Maintenant à ma question: Est-ce que DefaultDepth() ne retournera jamais plus de 24 ou est-ce juste mon système? (ma carte graphique est un peu datée ...). Je sais qu'il pourrait revenir 15, 16 ou même 8 pour un affichage CLUT mais peut-il revenir 32? Ou dois-je toujours utiliser XGetVisualInfo() en premier pour obtenir un visuel ARGB 32 bits?

Merci,

Andy

Répondre

2

DefaultDepth dans le protocole X se réfère à la profondeur de couleur. Il n'inclut pas l'alpha. C'est en quelque sorte moche, mais c'est ce que supposent plus de 20 ans d'applications non composites.

Oui, il peut revenir plus 24. Profondeur 30 écrans ne sont pas communs, mais ils existent.