push es push di
les di, dword ptr mi mov ax, 4F01h mov cx, mode int 10h pop di

4. Работа с основными графическими устройствам

pop es
}
#else
asm {
push di
mov di, word ptr mi mov ax,4F01h mov cx, mode int 10h pop di
}
#endif
return _AX == 0x004F;
)
int setVESAMode ( int mode )
{
if ( ifmdVESAMode ( mode, curMode ) ) return 0;
granularity = 64 / curMode.winGranularity; asm {
mov ax, 4F02h mov bx, mode int 10h
}
return _AX == 0x004F;
}
int getVESAMode () {
asm {
mov ax, 4F03h int 10h
}
if (_AX!=0x004F ) return 0;
else
return JBX;
}
void setVESABank ( int start )
{
if ( start == curBank ) return;
curBank = start; start *= granularity;
asm {
mov ax, 4F05h
mov bx, 0
mov dx, start
push dx

Компьютерная графика. Полигональные модели

int 10h
mov bx, 1
pop dx
int 10h
}
}
void writePixel (int x, int y, int color)
{
long addr = (long)curMode.bytesPerScanLine * (long)y +
(long)x;
setVESABank ( HIWORD ( addr)); pokeb ( OxAOOO, LOWORD ( addr), color);
}
main () {
VESAInfo vi;
if (IfindVESA ( vi )) {
printf ("\nVESA VBE not found." ); exit ( 1 );
}
if (IsetVESAMode ( VESA_640x480x256 )) exit ( 1 );
for (int i = 0; i < 640; i++ )
for(intj = 0;j<480;j++)
writePixel (i, j, ((i/20)+1)*fl/20+1));
getch ();
}

При помощи функции fmdVESA можно получить информацию о наличии BIOS, а также узнать все режимы, доступные для данной карты.

Функция findVESAMode возвращает информацию о режиме в полях ст pbiVESAModelnfo.

Укажем наиболее важные поля.

Поле

Размер в байтах

Комментарий

modeAttribut.es

Характеристики режима: бит 0 - режим доступен, бит 1 - режим зарезервирован, бит 2 - BIOS поддерживает вывод в этом режі

бит 3 - режим цветной, бит 4 - режим графический

winBAttributes I

Характеристики банка В

winGranularity

Шаг установки банка в килобайтах

win Size

Размер банка

4. Работа с основными графическими устройств

winAAttributes

Характеристики банка А: бит 0 - банк поддерживается, бит 1 - из банка можно читать, бит 2 - в банк можно писать

winASegment

Сегментный адрес банка А

winBSegment

Сегментный адрес банка В

bytesPerScanLine

Количество байт под одну строку

bitsPerPixel

Количество бит, отводимых под 1 пиксел

numberOffianks

Количество банков памяти

Приведем программу, выдающую информацию по всем доступным VE режимам.


⇐ Предыдущая| |Следующая ⇒