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 градаций цвета от ярко-белого д
|