X11 Window System

Приветствую.

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

Я прочитал о X11 и меня ввело в ступор что главный процесс который рулит всей графикой и событиями ввода является СЕРВЕРОМ.

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

Мне стало страшно за производительность, услышав такую реализацию =)

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

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

Этот графический интерфейс планируется использовать в Windows и Linux, соблюдая однородность внешнего вида.

Строение графического интерфейса построено следующим образом:

1. API для работы с элементами управления, такими как кнопки, чекбоксы, трекбары и все остальные вещи

2. Растеризатор, который будет преобразовывать все примитивы из API графического интерфейса в растровое изображение для дальнейшего его отображения в окне на разных платформах.

3. Реализация отображения растра в окне на различных системах

Как вы смотрите на такое решение?

Теперь у меня есть к вам некоторые вопросы по X11:

0. X11 является стандартном для графических интерфейсов в Linux системах?

1. Как это реализовано? Почему это так неплохо работает?

2. Я все же надеюсь что связь с локальным дисплеем производится минуя сетевые подключения, верно?

3. Для чего нужен доступ к дисплеям других машин по сети? Это нечто вроде удаленного доступа?

4. Возможно ли отображать сцену OpenGL на другой машине через сетевое соединение?

5. Как я могу копировать пиксели своего растра в окно на X11?

6. Могу ли я обновлять растр в окне только в нужных регионах как в InvalidateRect на windows?

7. Что представляет из себя Graphics Context, который создает XCreateGC, это что то нечто вроде CreateDC в windows? Какую роль выполняет?

Пока что это все что я хотел спросить, по мере появления других вопросов я буду писать их ниже.

Заранее благодарю. Жду ответов!