Самым низким уровнем будет видео-RAM видеокарты. Когда компьютер запускается впервые, графическая карта обычно устанавливается в устаревший режим символов 80x25.
В этот момент вы можете написать текст с помощью прерывания BIOS. Вы также можете изменить цвет переднего плана и фона из палитры из 16 отличительных цветов. Вы можете использовать порты / регистры доступа для изменения режима отображения. В этот момент вы можете сказать, загружать другой шрифт в память дисплея и по-прежнему использовать режим 80x25 (установки ОС обычно делают это), или вы можете продолжить и включить VGA / SVGA. Это довольно сложно, вот для чего нужны драйверы.
Как только карта перейдет в режим «выше», вы измените то, что отображается на экране, получив доступ к памяти, сопоставленной с видеокартой. Он хранится горизонтально попиксельно с некоторыми «грязными областями» пикселей, которые не отображаются на экране в конце каждой строки, которую вы должны компенсировать. Но да, вы можете скопировать пиксели изображения в памяти прямо на экран.
Для таких вещей, как DirectX, OpenGL. вместо записи непосредственно на экран, команды отправляются на графическую карту, и она автоматически обновляет свой экран. Такие команды, как «Привет, нарисуйте это изображение, которое я загрузил в VRAM здесь, здесь и здесь» или «Нарисуйте эти треугольники с помощью этой матрицы преобразования ...», занимают небольшую часть времени по сравнению с пикселем за пикселем. Процессор поблагодарит вас.
DirectX / OpenGL - дружественная для программиста библиотека для отправки этих команд на карту со всеми вспомогательными функциями, которые помогут вам сделать это гладко. Более прямой подход был бы только непродуктивным.
SDL - это уровень абстракции, поэтому, не потрудившись прочитать его, я думаю, у него будут разные способы работы в каждой системе. На одном он может использовать полу-прямую запись экрана, другой на Direct3D и т. Д. Что бы ни было быстрым, пока код остается кроссплатформенным ... возможно.
Система GDI / GDI + и XWindow. Они предназначены специально для рисования окон. Первоначально они рисовали, используя попиксельный метод (который был достаточно хорош, потому что им пришлось бы перерисовывать только при нажатии кнопки или перемещении окна и т. Д.), Но теперь они используют Direct3D / OpenGL для ускоренного рисования (и специальных последствия). Оптимизация зависит от версий и реализаций этих библиотек.
Так что, если вам нужна максимальная мощность и скорость, DirectX / openGL - это то, что вам нужно. SDL, безусловно, полезен для получения максимальной отдачи от кроссплатформенной среды и в любом случае интегрируется с OpenGL. Система окон стоит последней, но не стоит ее недооценивать. Особенно с тем, что Microsoft придумала в последнее время.