Страницы

Поиск по вопросам

пятница, 26 октября 2018 г.

Отрисовать пиксели на Xorg-окне с помощью стандартных либ в Linux

Графические тулкиты штука сложная, но все они начинают с отрисовки пикселя, мне нужно повторить это базовое действие. Допустим имеется запущенный Xorg, в нём программа, которая любым образом создаёт себе Xorg-окно, в этом окне и нужно рисовать пиксели.
Условие:
Только стандартные библиотеки ядра Linux. Никаких GTK/Qt/OpenGL/Cairo и встроенных Xorg-способов.
Вопросы:
Чем, собственно, рисовать? (Хотелось бы услышать конкретный ответ.) Как рисовать? (Желательны примеры/ссылки на примеры, тема довольно непопулярная, информации мало.) Преимущества того или иного способа.
UPD: В ответ на комментарий пользователя @KoVadim всё не влезло, отпишу в основной вопрос в качестве общего пояснения.
Если это Xorg окно, то и он должен рисовать с помощью XDrawPoint
Хочется сказать, что большинство граф. тулкитов не рисует картинку через фичи графического сервера. Qt рисует с помощью своего "велосипеда", GTK это делает с помощью Cairo, и это правильно. В том же Wayland, который пришел в замену иксов вообще нет подобного функционала. Wayland просто делает окно оставляя отрисовку всего в окне тулкитам.
Остановимся на Cairo, он наверняка использует что-то низкоуровневое, я хочу узнать что. (копать сорцы опыта не хватает)
Фреймбуфер пробовал, всё про него знаю. Во первых лучше использовать DRM. Во вторых это всё не то. (А возможно DRM вполне годен, но как его использовать а Xorg я не нашел, нету документации и всё.)


Ответ

LibXCB считается более современной и более производительной, чем xlib, но документация по ней не полная. Рисовать что-то по пикселам очень непроизводительно, поэтому есть набор примитивов, часть которых обычно поддерживается аппаратно. Там есть пример рисования некоторых примитивов кроме пиксмапов. Cairo использует libXCB.
Кстати если разберётесь, может быть ответите на мой вопрос четырёхлетней давности?

Комментариев нет:

Отправить комментарий