}
main ()
if (IfindCirrus ()) {
printf ("\nCirrus card not found"); exit (1 );
}
setCirrusMode ( 0x5F ); // 640x480x256
for (int i = 0; i < 640; f++ )
for(intj = 0;j<480;j++)
writePixel (i, j, ((i/20)+1 )*(j/20+1));
getch();
}
Тем самым можно построить библиотеку, обеспечивающую работу с основными SVGA-картами. Сильная привязанность подобной библиотеки к конкретному набору карт - ее главный недостаток.
Ассоциацией стандартов в области видеоэлектроники - VESA (Video Electronic Standarts Association) была сделана попытка стандартизации работы с различными SVGA-платами путем добавления в BIOS-платы некоторого стандартного набора функций, обеспечивающего получение необходимой информации о карте, установку заданного режима и банка памяти. При этом также вводится стандартный набор расширенных режимов. Номер режима является 16-битовым числом, где биты 9-15 зарезервированы и должны быть равны нулю, бит 8 для VESA-режимов равен единице, а для родных режимов карты - нулю.
Приведем таблицу основных VESA-режимов.
Номер Разрешение Бит на пиксел Количество цветов
lOOh 640x400 8_J256_
101 h 640x480 8_J256__
102h 800x600 4___16_
103h 800x600 __8__256_
104h 1024x768 4__16 _
105h 1024x768 8_256___
106h 1280x1024 4__16_
107h 1280x1024 8_ 256 _
lODh [320x200 | 15 |32K
Компьютерная графика. Полигональные модели
lOEh | 320x200 |
64 К |
|
lOFh | 320x200 | 16M | |
11 Oh | 640x480 |
32 К |
|
lllh | 640x480 |
64 К |
|
112h | 640x480 | 16M | |
113h | 800x600 |
32 К |
|
114h | 800x600 |
64 К |
|
115h | 800x600 |
16М |
|
116h | 1024x768 |
32 К |
|
117h | 1024x768 |
64 К |
|
118h | 1024x768 | 16 M | |
119h | 1280x1024 |
32 К |
|
11 Ah | 1280x1024 |
64 К |
|
HBh | 1280x1024 |
16М |
Ниже приводятся файлы, содержащие необходимые структуры и функци работы с VESA-совместимыми адаптерами.
У // File Vesa.H
#ifndef | VESA | |
#define | __VESA_ | |
// 256-color modes | ||
#define | VESA 640x400x256 | 0x100 |
#define | VESA 640x480x256 | 0x101 |
#define | VESA 800x600x256 | 0x103 |
#define | VESA 1024x768x256 | 0x105 |
#define | VESA J 280x1024x256 | 0x107 |
// 32K color modes | ||
#define | VESA 320x200x32K | 0x10D |
#define | VESA 640x480x32K | 0x110 |
#define | VESA 800x600x32K | 0x113 |
#define | VESA 1024x768x32K | 0x116 |
#define |
VESA_1280x1024Х32К |
0x119 |
// 64K color modes | ||
#define | VESA 320x200x64K | 0x10E |
#define | VESA 640x480x64K | 0x111 |
#define | VESA 800x600x64K | 0x114 |
#define | VESA 1024x768x64K | 0x117 |
#define | VESA_1280x1024x64K | 0x11 A |
// 16M color mode | ||
#define | VESA 320x200x16M | 0x1 OF |
#define | VESA 640x480x16M . | 0x112 |
#define | VESA 800x600x16M | 0x115 |
#define | VESA 1024x768x16M | 0x118 |
#define | VESA 1280x1024x16M | 0x11B |
|
{