Информационный сервер для программистов: Исходники со всего света. Паскальные исходники со всего света
  Powered by Поисковый сервер Яndex: Найдется ВСЁ!
На Главную Pascal Форум Информер Страны мира
   Экранные Средства    >>    palitr
   
 
 Изменение палитры в графическом режиме  Константин Поддубный 18.01.1995

Краткий экскурс в регистры палитры для тех, кто не знает, что такое палитра, и как получается цвет на экране



2k 
 

From: "Constantin Poddubny" <const@const.krasnoyarsk.su> Subject: Re: Изменение палитры в graph mode. Organization: The Sosnovoborsk Municipal Venture for Housing and Date: Wed, 18 Jan 1995 07:28:19 GMT > Hi All. > Есть вопросик. > Можно-ли в графическом режиме 13H производить плавное > затухание экрана т,е, изменение палитры. > Видел исходник на цэ но они там в порт нецелое значение как-то > пишут а в Паскале так нельзя. > А если это значение округлять то плавного перехода > нет и экран скачет :( > Помогите please кто сталкивался. > --- > *-=| С уважением Виктор |=-* Всем привет, и особенно Виктору! Плавное изменение палитры экрана можно делать запросто. Не знаю как это выглядит на Паскале с использованием процедур из модуля Graph, но с использованием встроенного Ассемблера и BIOSa это делается примерно так, как описано ниже (все это справедливо для VGA и SVGA). Краткий экскурс в регистры палитры для тех, кто не знает, что такое палитра и как получается цвет на экране: В 256-ти цветных режимах используются 256*3 8-ми битных регистра палитры, при этом для каждого из 256-ти цветов отводится 3 регистра по одному на свой цвет - красный, синий, зеленый. В каждом регистре хранится 6 бит цвета. Цвет на экране получается следующим образом: аппаратура читает байт из видеопамяти; полученное значение используется как индекс в массиве регистров палитры для получения 3 байт цвета, точнее 6*3=18 бит цвета. Таким образом, одновременно на экране может быть отображено 256 цветов из палитры 2**18=262144 цветов. Предположим, что нам нужно плавно изменить какой-то цвет. В теории это выглядит так: Цвет номер 15 первоначально ярко-белый: Red Green Blue 111111 111111 111111 ярко-белый 111110 111110 111110 белый, но менее яркий ............................................ 001111 001111 001111 серый 001110 001110 001110 серый, но потемнее ............................................ 000001 000001 000001 почти черный 000000 000000 000000 черный Таким образом, мы получили 64 градаций цвета от ярко-белого д