Как происходит отрисовка интерфейса на низком уровне?
Реквестирую чтиво и видео, в котором объясняется, как происходит отрисовка пользовательского интерфейса:
- например, прокрутка контента. Я так понимаю, существуют видеостраницы в памяти, на которых сначала все рисуется, а потом разница между текущим состоянием и новым выводится на экран. Хотелось бы узнать про это подробнее;
- как работает аппаратное ускорение;
- как рендерится веб-страница со всеми эффектами: тени, полупрозрачность, анимация;
- как работают композитные менеджеры окон, типа Compiz;
- про библиотеки GTK+ и Qt, хочется понять, как они уживаются в одной десктопной среде в линуксе;
- шрифты, и тд.
Уровень подготовки: 10 лет в веб-разработке, до этого 3 года турбо-паскаль, с графическими фичами DOS-уровня имел дело.
Я так понимаю, существуют видеостраницы в памяти, на которых сначала все рисуется, а потом разница между текущим состоянием и новым выводится на экран. Хотелось бы узнать про это подробнее;
Как правило просто перерисовывается все. Вообще все. Затем уже идут оптимизации. Скажем в iOS есть чудный компонент под названием UITableView который просто игнорирует все невидимые ячейки. С другой стороны тот же браузер будет рендрить все, что не display: none. Даже если это "что-то" заслоняет другой слой. Идею вы думаю уловили.
как работает аппаратное ускорение;
Читаем про архитектуру видеокарт, opengl, графический конвейер.
как рендерится веб-страница со всеми эффектами: тени, полупрозрачность, анимация;
как работают композитные менеджеры окон, типа Compiz;
прямо с их сайта:
Compiz is an OpenGL compositing manager that use GLX_EXT_texture_from_pixmap for binding redirected top-level windows to texture objects. It has a flexible plug-in system and it is designed to run well on most graphics hardware.
Если вы ознакомились с OpenGL то думаю разберетесь.