Как вывод графического интерфейса работает от уровня приложения до уровня оборудования?

Я начинаю программировать с графическим интерфейсом пользователя и провёл небольшое исследование. Мне сейчас не все понятно. Если бы я использовал GTK + в качестве инструментария, как он взаимодействует с видеокартой?

Я полагаю, что в системе Linux это будет GTK -> X Server - (OpenGL) -> видеокарта. Это правильно?

Я читал, что некоторые графические интерфейсы напрямую рисуют OpenGL (например, Blender3D), так как же другие приложения рисуют свои графические интерфейсы?

Если единственные API-интерфейсы (о которых я знаю) для видеокарт - Direct3D и OpenGL, В чем разница между программным рендерингом и аппаратным ускорением?

Может ли программное обеспечение, которое выполняет «программный рендеринг», напрямую писать в фреймбуфер видеокарты, так что OpenGL не затрагивается?

PS: извините за многие вопросы, но я действительно не понимаю, как это все работает, спасибо за каждый ответ :)

11
задан mbert 8 January 2012 в 12:33
поделиться