XDefaultDepth и XDisplayPlanes - какая разница? - PullRequest
3 голосов
/ 13 мая 2019

Для XDefaultDepth, документация Xlib гласит:

Возвращает глубину (количество плоскостей) корневого окна по умолчанию для указанный экран.
Другие глубины также могут поддерживаться на этом экране.

Для XDisplayPlanes написано:

Возвращает глубину корневого окна указанного экрана.

Таким образом, оба возвращают глубину рабочего стола (корневое окно).
Оба имеют одинаковое количество и типы параметров тоже. Это сбивает с толку: /
В чем же разница между этими двумя?
Потому что из этого описания они, кажется, делают то же самое: q

1 Ответ

2 голосов
/ 14 мая 2019

Хотя они могут быть идентичными в реализации (см. grep root_depth /usr/include/X11/Xlib.h), между "глубиной" и "плоскостями" есть семантическая разница,

  • Глубина окна или растрового изображения - это количество бит на пиксель. есть. Глубина графического контекста - это глубина прорисовки может использоваться вместе с графическим выходом.

  • Когда растровое изображение или окно рассматривается как стек [1-битных] растровых изображений, каждое Растровое изображение называется плоскостью или битовой плоскостью.

(из https://www.x.org/releases/X11R7.7/doc/xproto/x11protocol.html)

И я думаю, именно поэтому они предоставили отдельные интерфейсы.

Копаясь в истории X11,

https://www.hpl.hp.com/techreports/Compaq-DEC/CRL-90-8.pdf

Так как доступное хранилище памяти для окна может быть очень драгоценный, особенно на глубоком дисплее, есть также окно атрибуты, которые сообщают серверу, какие плоскости экрана должны сохранить в резервном хранилище вместе с базой значений пикселей, чтобы окно может быть заново сгенерировано при экспонировании.

https://www.student.cs.uwaterloo.ca/~cs349/f18/resources/X/TheXWindowSystem.pdf

Оверлейная графика может быть нарисована путем ограничения вывода (см. Следующий сечение) в единственную битовую плоскость, указанную в маске, возвращаемой распределение цвета. Включение битов в этой плоскости (в l) изменяет изображение до пятого цвета, и отключение их превращает изображение в его первоначальный цвет.

Некоторые функции Xlib, например, XCopyPlane, работают с одним самолет. Если бы я работал с самолетами и хотел знать, сколько самолетов мне приходилось работать, было бы более разумно звонить XDisplayPlanes(), чем XDefaultDepth().

...