На главную
Подписка
Новости










Главная / MS-DOS / MS-DOS. РУКОВОДСТВО РАЗРАБОТЧИКА / Глава 9 / Режим отображения 256 цветов VGA Сделать домашней страницей Добавить в избранное Написать писмо

НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Режим отображения 256 цветов VGA

VGA имеет новый видеорежим, режим 19, который может отображать 256 цветов из палитры 262.144 цветов. Концептуально режим 19 достаточно прост. Так как каждый элемент изображения представляется одним байтом дисплейной памяти, упрощены вычисления, определяющие смещение каждого элемента изображения. Программа, представленная в листинге 9-10, служит примером режима 19 VGA. Отображаются все 256 цветов. Первые 16 цветов такие же, как цвета палитр CGA, VGA и EGA. Следующие 21 цвет принадлежат серому спектру. Заключительные 216 цветов представляют собой три группы по 72 цвета. В каждой группе цвета плавно переходят от синего к красному и зеленому. Три группы соответствуют уменьшению насыщенности или увеличению белизны.


                        Листинг 9-10. Пример режима 19 VGA.
         ---------------------------------------------------------------

         void fast19(int, int, int) ;

         main()
         {
           register i, j ;
           struct Ega_info info ;
           if(get_ega_info(&info))
              if(info.card == 'V')       /* карта VGA? */
                 set_crt_mode(19) ;
              else
                 return ;
           else
              return ;

           for(i=0x0; i<=0xFF; i++)      /* вывести палитру */
              for(j=0; j<200; j++)
              fast19(j,i,i) ;
         }
         void fast19(row,col,color)
         int row, col, color ;
         {
            /* так как каждый байт является элементом изображения,
            ** смещение элемента изображения это
            ** (строка * 320 байтов/строка) + столбец
            ** также отсутствует маска бита */
            unsigned char far *rgen = (char far *)(0xA0000000L +
                                      (row * 320) + col) ;
            *rgen = (unsigned char)color ;
         }
         --------------------------------------------------------------

В программу 9-10 включена подпрограмма непосредственной записи точки в видеопамять, fast19(), для режима отображения 256 цветов VGA. Поскольку каждый элемент изображения использует 1 байт дисплейной памяти, подпрограмма может быть очень направленной. Нет необходимости в длинных вычислениях памяти или манипуляции с маской бита или маской матрицы. Похоже, что подпрограмма, возвращающая значение элемента изображения, ведет прямо вперед. Просто замените оператор *rgen = color ; оператором return(*rgen) ;.


НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Hosted by uCoz