Визуальные эффекты X11 и ARGB: DefaultDepth () никогда не возвращает 32? - PullRequest
1 голос
/ 15 мая 2010

Я устанавливаю соединение с X-сервером следующим образом:

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

Мне интересно, почему «глубина» всегда установлена ​​на 24. Я ожидаю, что это только 24, когда композитинг выключен, но на самом деле, это все еще 24, даже когда я включаю композитинг. Поэтому, чтобы получить 32-битный ARGB-визуал, мне нужно сначала вызвать XGetVisualInfo () с явно заданной глубиной 32.

Теперь на мой вопрос: будет ли DefaultDepth () вообще никогда не возвращать больше 24 или это только в моей системе? (моя графическая плата несколько устарела ...). Я знаю, что он может вернуть 15, 16 или даже 8 для дисплея CLUT, но может ли он вернуть 32? Или мне всегда нужно сначала использовать XGetVisualInfo (), чтобы получить ARGB 32-битный визуал?

Спасибо

Энди

Ответы [ 2 ]

2 голосов
/ 23 мая 2011

DefaultDepth в протоколе X относится к глубине цвета. Не включает в себя альфа. Это некрасиво, но это то, что предполагают 20+ лет некомпозитных приложений.

Да, он может возвращать более 24. Отображение глубины 30 не является обычным, но существует.

0 голосов
/ 16 мая 2010

В 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=

...