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)