|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Arthur Stankevich 2:5020/400 12 Aug 2002 16:29:50 To : Anton Morozov Subject : Re: перекрывающиеся окна --------------------------------------------------------------------------------
Здравствуйте, Anton Morozov. 03.08.2002 вы писали:
AM> Сабж. Обдумываю уже больше года, так ничего и не решил. Видеорежим -
AM> 13h, 320х200х256. Т.е. битовых плоскостей нет. Далее, несколько
AM> прямоугольных фрагментов с графикой. А теперь - главное: перерисовать
AM> фон, т.е. все, кроме этих кусков. Единственный выход, по-моему, это
AM> делать в памяти буфер, по размеру такой же, как экран и по биту на
AM> пиксель, а при прорисовке "начертить"
AM> занятые прямоугольники в буфере и вырисовывать только те пиксели,
AM> которые в буфере не отмечены. Hо, в таком случае, возникают некоторые
AM> тормоза. Другой вариант - перирисовать все, а это черевато еще
AM> большими тормозами и тем более - мерцанием. Что делать?
Давным-давно, когда я учился на первом курсе мне в голову ударила жуткая
моча - сделать красивую-раскрасивую лабораторную работу. Вариантов было
много и вышеупомянутый 13h и 640x480x4 (четыре бита, разумеется - 16 цветов)
и чего-то еще, сейчас уже не вспомню. В конце концов остановился на реальном
режиме процессора при VESA-режиме 640х480х8 (800x600x8 - выбриается при
компиляции). Все, что касается непосредственно операций с видео написано на
asm'e, остальное - (не пинать) на паскале.
Полные исходники недосырого шаблона можно найти здесь:
http://mmugp6.da.ru/pub/prog/mylab.exe
Hачертания делаются путем разбиения сложной рисуемой области на
прямоугольники и последующего многократного рисования нужных областей с
использованием, пардон, clipping`a.
Алгоритм разбиения на прямоугольники реализован в gcontrol.pas (TRectList),
рисование клипуемых областей - в vga.pas на ассемблере.
С уважением, Arthur Stankevich
P.S. Комментариев, как всегда, мало, но понять вполне можно.
Я только что понял после того, как целый год на это вообще не смотрел :)
--- ifmail v.2.15dev5
* Origin: Demos online service (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/657762e1ae98.html, оценка из 5, голосов 10
|