Re: перекрывающиеся окна

From
Arthur Stankevich ()
To
Anton Morozov
Date
2002-08-12T16:29:50Z
Area
RU.ALGORITHMS
From: "Arthur Stankevich" <toorick@info-net.ru>

Здравствуйте, Anton Morozov. 03.08.2002 вы писали:

AM> Сабж. Обдумываю уже больше года, так ничего и не решил. Видеорежим -
AM> 13h, 320х200х256. Т.е. битовых плоскостей нет. Далее, несколько
AM> прямоугольных фрагментов с графикой. А теперь - главное: перерисовать
AM> фон, т.е. все, кроме этих кусков. Единственный выход, по-моему, это
AM> делать в памяти буфер, по размеру такой же, как экран и по биту на
AM> пиксель, а при прорисовке "начертить"
AM> занятые прямоугольники в буфере и вырисовывать только те пиксели,
AM> которые в буфере не отмечены. Но, в таком случае, возникают некоторые
AM> тормоза. Другой вариант - перирисовать все, а это черевато еще
AM> большими тормозами и тем более - мерцанием. Что делать?

Давным-давно, когда я учился на первом курсе мне в голову ударила жуткая
моча - сделать красивую-раскрасивую лабораторную работу. Вариантов было
много и вышеупомянутый 13h и 640x480x4 (четыре бита, разумеется - 16 цветов)
и чего-то еще, сейчас уже не вспомню. В конце концов остановился на реальном
режиме процессора при VESA-режиме 640х480х8 (800x600x8 - выбриается при
компиляции). Все, что касается непосредственно операций с видео написано на
asm'e, остальное - (не пинать) на паскале.
Полные исходники недосырого шаблона можно найти здесь:
http://mmugp6.da.ru/pub/prog/mylab.exe
Начертания делаются путем разбиения сложной рисуемой области на
прямоугольники и последующего многократного рисования нужных областей с
использованием, пардон, clipping`a.
Алгоритм разбиения на прямоугольники реализован в gcontrol.pas (TRectList),
рисование клипуемых областей - в vga.pas на ассемблере.

С уважением, Arthur Stankevich

P.S. Комментариев, как всегда, мало, но понять вполне можно.
Я только что понял после того, как целый год на это вообще не смотрел :)


--- ifmail v.2.15dev5
 * Origin: Demos online service (2:5020/400)