vptr -= cols + 2;
}
}
void restoreRect (int x1, int y1, int x2, int y2, char huge * buf) {
char far * vptr = (char far *) MK_FP (OxAOOO, y1*80+(x1»3)); int cols = (x2 » 3 ) - ( x1 » 3 ) -1; char Imask = leftMask ( x1 ); char rmask = rightMask ( x2 ); char latch;

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

if ( cols < 0 ) {
Imask &= rmask; rmask = 0; cols = 0;
}
for ( int y = y1; y <= y2; y++, vptr += 80 ) for ( int plane = 0; plane < 4; plane++ ) '
{
writeReg ( EGAJ3RAPHICS, EGA_BIT_MASK, Imask ); writeReg ( EGA_SEQUENCER, EGA_MAP_MASK, 1 « plane ); latch = *vptr; *vptr++ = *buf++;
writeReg ( EGA_GRAPHICS, EGA_BITJv1ASK, OxFF ); for ( int x = 0; x < cols; x++ ) *vptr++ = *buf++;
writeReg ( EGAJ3RAPHICS, EGA_BIT_MASK, rmask ); latch = *vptr; *vptr++ = *buf++; vptr -= cols + 2;
}
writeReg ( EGA_GRAPHICS, EGA_J3ITJv1ASK, OxFF ); writeReg ( EGA_SEQUENCER, EGA_MAP_MASK, 0x0F );
}

4.9.4. Режим адаптера VGA с 256-цветами Из всех видеорежимов этот режим является самым простым. При разрешении экрана 320x200 точек он позволяет одновременно использовать все 256 цветов. Для одновременного отображения 256 цветов необходимо под каждую точку на экране отвести по 8 бит. В рассматриваемом режиме эти 8 бит идут последовательно один за другим, образуя 1 байт. Тем самым в этом режиме плоскости не используются. Видеопамять начинается с адреса ОхАООО.О. При этом точке с координатами (х, у) соответствует байт памяти по адресу 320^ + х.

El // File vga256.cpp
void writePixel ( int x, int y, int color ) {
pokeb ( OxAOOO, 320*y + x, color ); }
int readPixel ( int x, int y ) {
' return peekb ( OxAOOO, 320*y + x );
}

Для установки регистров палитры можно воспользоваться ранее введенной Функцией setPalette, осуществляющей установку регистров через BIOS, а сделать это Можно непосредственным программированием регистров DAC. Функция setPaletteDirect устанавливает палитру из 256 цветов путем программирования DAC-Регистров.

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

II File dacpal.cpp

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