Od samego początku komputera IBM i jego klonów sprzęt karty graficznej był bardzo prosty: mały blok pamięci był dedykowany siatce komórek znakowych (80 x 25 znaków w trybie standardowym), z dwoma bajtami pamięci dla każdej komórki . Jeden bajt wybrał znak, a drugi „atrybuty” - kolory pierwszego planu i tła oraz sterowanie miganiem dla kart kolorów; pogrubione, podkreślone, migające lub odwrócone wideo dla adapterów monochromatycznych. Sprzęt wyszukiwał piksele z tabeli ROM kształtów znaków zgodnie z zawartością pamięci znaków.
Aby zapewnić pewien stopień niezależności sprzętowej, interfejs BIOS-u do mapy znaków wymagał wykonania przerwania programowego w celu ustawienia pojedynczej komórki znakowej na ekranie. To było powolne i nieefektywne. Pamięć znaków była jednak również adresowalna bezpośrednio przez CPU, więc jeśli wiesz, jaki sprzęt był obecny, możesz zamiast tego pisać bezpośrednio do pamięci. Tak czy inaczej, po ustawieniu, postać pozostanie na ekranie, dopóki nie zostanie zmieniona, a całkowita pamięć znaków, z którą trzeba pracować, to 4000 bajtów - mniej więcej tyle, co rozmiar pojedynczej pełnokolorowej tekstury 32 x 32!
W trybach graficznych sytuacja była podobna; każdy piksel na ekranie jest powiązany z określoną lokalizacją w pamięci, a interfejs BIOS-piksel był ustawiony, ale praca z wysoką wydajnością wymagała zapisu bezpośrednio do pamięci. Późniejsze standardy, takie jak VESA, pozwalają systemowi wykonać kilka wolnych zapytań opartych na systemie BIOS, aby poznać układ pamięci urządzenia, a następnie pracować bezpośrednio z pamięcią. W ten sposób system operacyjny może wyświetlać grafikę bez wyspecjalizowanego sterownika, chociaż współczesne systemy operacyjne zawierają również podstawowe sterowniki dla wszystkich głównych producentów układów GPU. Nawet najnowsza karta NVidia będzie obsługiwać kilka różnych trybów kompatybilności wstecznej, prawdopodobnie aż do IBM CGA.
Jedną ważną różnicą między grafiką 3D a 2D jest to, że w 2D generalnie nie trzeba przerysowywać całego ekranu co klatkę. W 3D, jeśli kamera porusza się choć trochę, każdy piksel na ekranie może się zmienić; w 2D, jeśli nie przewijasz, większość ekranu pozostanie niezmieniona klatka po klatce, a nawet jeśli przewijasz, ogólnie możesz wykonać szybką kopię z pamięci do pamięci zamiast ponownie komponować całą scenę. Nie ma więc nic przeciwko wykonywaniu INT 10h dla każdego piksela każdej klatki.
Źródło: Jestem naprawdę stary