З перших днів роботи комп'ютера IBM та його клонів апаратне забезпечення адаптера дисплея було дуже простим: невеликий блок пам'яті був виділений сітці символьних комірок (80x25 символів у стандартному режимі), з двома байтами пам'яті для кожної комірки . Один байт вибрав символ, а інший обрав його "атрибути" - кольори переднього плану та фону, а також контроль моргання для кольорових адаптерів; жирне, підкреслене, миготливе або зворотне відео для монохромних адаптерів. Апаратні засоби шукали пікселі з таблиці ПЗУ символьних фігур відповідно до вмісту пам'яті символів.
Для того, щоб запропонувати певну ступінь апаратної незалежності, інтерфейс BIOS до карти символів вимагав виконання програмного переривання для встановлення на екрані однієї символьної комірки. Це було повільно і неефективно. Однак пам'ять символів також була безпосередньо адресована процесором, тому, якщо ви знали, яке обладнання присутнє, ви можете замість цього записати безпосередньо в пам'ять. У будь-якому випадку, після встановлення персонаж залишатиметься на екрані до зміни, а загальна пам'ять символів, з якою вам потрібно було працювати, становила 4000 байт - приблизно розміром однієї повнокольорової текстури 32x32!
У графічних режимах ситуація була схожа; кожен піксель на екрані асоціюється з певним місцем в пам'яті, і був інтерфейс BIOS із встановленим пікселем, але робота з високою продуктивністю вимагала запису безпосередньо в пам'ять. Пізніші стандарти, як VESA, дозволяють системі виконати кілька повільних запитів на основі BIOS, щоб дізнатися компонування пам'яті апаратного забезпечення, а потім працювати безпосередньо з пам'яттю. Ось так ОС може відображати графіку без спеціалізованого драйвера, хоча сучасні ОС також містять базові драйвери для кожного основного виробника GPU. Навіть найновіша карта NVidia підтримуватиме декілька різних режимів сумісності, можливо, аж до IBM CGA.
Важлива відмінність 3D-графіки від 2D полягає в тому, що в 2D вам взагалі не потрібно переробляти весь екран кожного кадру. У 3D-режимі, якщо камера рухається навіть крихітним шматочком, кожен піксель на екрані може змінюватися; у 2D, якщо ви не прокручуєте, більша частина екрану буде незмінною кадр в кадр, і навіть якщо ви прокручуєте, ви, як правило, можете зробити швидку копію пам'яті на пам'ять замість того, щоб переробляти всю сцену. Тож це не що інше, як виконувати INT 10 год на кожен піксель у кожному кадрі.
Джерело: Я справді старий