Поэтому я хотел бы создать компоновщик для wayland, который поддерживает 3D-эффекты для окон (что-то похожее на compiz, но на wayland). Я уже видел этот вопрос: Где сделать Я начинаю, хочу ли я написать компоновщик Wayland?, но единственный ответ указывает на SWC(https://github.com/michaelforney/swc), что в моем случае неприменимо, так как я хочу использовать OpenGL и поскольку SWC не поддерживает 3D. Итак, есть ли какой-нибудь проект/библиотека/книга/туториал/и т. д., где я могу изучить необходимые вещи для написания своего собственного WM на Wayland? Заранее спасибо.
С чего начать, если я хочу написать 3D-композитор Wayland (используя OpenGL)?
Ответы (1)
Единственной целью протокола wayland является связь между клиентом и сервером. Сервер предоставляет клиенту входные события, а клиент предоставляет серверу буфер (который можно сопоставить с текстурой OpenGL). Откуда сервер/композитор получает свои входные события и что он делает с буфером, полностью зависит от композитора.
Таким образом, самому компоновщику нужен источник входных событий и способ отрисовки результата. Вот почему многие компоновщики Wayland имеют несколько серверных частей: они могут работать поверх X11, непосредственно поверх ядра Linux или даже поверх другого сервера Wayland.
Ответ на ваш вопрос действительно зависит от того, где вы хотите запустить свой композитор. Написание компоновщика, работающего поверх X11, может быть самым простым способом начать работу, если вы уже знакомы с тем, как настроить и запустить приложение OpenGL. Если вы хотите запустить свой компоновщик непосредственно поверх ядра Linux, вы, вероятно, захотите изучить evdev и libinput для ввода и DRM/KMS вместе с EGL поверх GBM, чтобы создать контекст OpenGL и отобразить результат на мониторе. Существуют также библиотеки рендеринга (например, evas), которые могут работать непосредственно поверх ядра Linux, но я не знаю, насколько далеко они позволяют вам вводить свой собственный код OpenGL.
После того, как вы решили, где вы хотите запустить свой компоновщик, вы можете начать с простого написания обычного приложения OpenGL, а затем продолжить и интегрировать сервер wayland для отображения и взаимодействия с реальными окнами клиента.