Clear_Screen ( )
En annan sak som du måste kunna är att fylla skärmen med en viss färg (vanligtvis svart). Man kan ju aldrig vet vad som ligger i
videominnet innan man ställer in grafikläget. Därför är det viktigt
att man alltid fyller videominnet med ett visst värde, t.ex. 0 (svart),
innan man börjar rita ut grafik på skärmen.
Det enklaste sättet att fylla skärmen på är att använda en for-sats:
void Clear_Screen(int color)
{
int index;
for(index=0;index<64000;index++)
video_buffer[index]=color;
}
Den här funktionen fyller video minnet med värdet på color.
Tyvärr så är den här funktionen alldeles för långsam. Som tur är finns det
en annan lösning, nämligen inline assembler:
void Clear_Screen(int color)
{
_asm {
les di,video_buffer
mov al,BYTE PTR color
mov ah,al
mov cx,32000
rep stosw
}
}
Våran nya funktion skriver endast 320*200/2 = 32000 gånger till video minnet, vilket
är hälften av vad den förra funktionen klarade av. Våran nya funktion gör
alltså samma jobb dubbelt så snabbt, om inte ännu snabbare. Anledningen
till att den nya funktionen bara behöver skriva till video minnet 32000
gånger, är att den använder sig av words istället för bytes. Eftersom 1
word är lika med 2 byte behövs helt enkelt bara hälften så många words.
Man kan alltså säga att vi skriver till två punkter samtidigt.
Då har du kommit ännu ett litet steg närmare ditt mål, men mycket arbete återstår.
Ladda nu hem källkoden till den här lektionen och njut av det vackra skådespel du
kommer att bjudas på. :-)
|