Ы\ II File Vesalnfo.cpp #include «vesa.h» char * colorlnfo (int bits )
{
switch (bits ) {
case 4: return "16 colors";
case 8: return "256 colors";
case 15: return "32K colors ( HiColor)";
case 16: return "64K colors ( HiColor)";
case 24: return "16M colors ( TrueColor)";
default: return "";
}
}
void dumpModa (int mode ) {
VESAModelnfo mi; if (IfindVESAMode ( mode, mi)) return;
if ((mi.modeAttributes & 1) == 0)
return; // not available now
printf ("\n %4X %10s %4dx %4d %2d %s", mode, mi.modeAttributes & 0x10 ? "Graphics": "Text", mi.xResolution, mi.yResolution, mi.bitsPerPixel, colorlnfo ( mi.bitsPerPixel));
}
main ()
{
VESAInfo Info; char str[256]; if (IfindVESA ( Info ))
{
printf ("VESA VBE not found"); exit ( 1 );
}
Jstrcpy ( str, Info.OEM );
printf ("\nVESA VBE version %d.%d\nOEM: %s\nTotal memory:"
Компьютерная графика. Полигональные модели
"%dKb\n", Info.version » 8, Info.version & OxFF, str, Info.totalMemory * 64 ); for ( int і = 0; Info.modeList [i] != -1 ; i++ ) dumpMode ( Info.modeList [i] );
}
4.10.1. Непалитровые режимы адаптеров SVGA
Ряд SVGA-карт поддерживают использование так называемых непалитровых
режимов - для каждого пиксела вместо индекса в палитре непосредственно задается его RGB-значение.
Обычно такими режимами являются режимы HiColor (15 или 16 бит на пиксел) и TrueColor (24 или 32 бита на пиксел).
Видеопамять для этих режимов устроена аналогично 256-цветным режимам
SVGA - под каждый пиксел отводится целое количество байт памяти (2 байта для HiColor и 3 или 4 байта для TrueColor), все они расположены подряд и сгруппированы в банки.
Наиболее простой является организация режима TrueColor (16 млн цветов) - под каждую из трех компонент цвета отводится по 1 байту.
Для удобства работы ряд карт отводит по 4 байта на 1 пиксел, при этом старший байт игнорируется. Таким образом, память для 1 пиксела устроена так:
rrrrrrrrggggggggbbbbbbbb
или