|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Andrey Dashkovsky 2:5002/46.4 05 Aug 2002 23:01:06 To : Anton Morozov Subject : перекрывающиеся окна --------------------------------------------------------------------------------
03 Авг 02 19:06, you wrote to all:
AM> Сабж. Обдумываю уже больше года, так ничего и не решил. Видеорежим -
AM> 13h, 320х200х256. Т.е. битовых плоскостей нет. Далее, несколько
AM> прямоугольных фрагментов с графикой. А теперь - главное: перерисовать
AM> фон, т.е. все, кроме этих кусков. Единственный выход, по-моему, это
AM> делать в памяти буфер, по размеру такой же, как экран и по биту на
AM> пиксель, а при прорисовке "начертить" занятые прямоугольники в буфере
AM> и вырисовывать только те пиксели, которые в буфере не отмечены. Hо, в
AM> таком случае, возникают некоторые тормоза. Другой вариант -
AM> перирисовать все, а это черевато еще большими тормозами и тем более -
AM> мерцанием. Что делать?
А чем не нравится битовая маска? Я тоже долго с этой проблемой бился, в итоге
пришёл именно к этому решению. Т.е. типа перерисовываю все окна, они рисуют
сверху вниз, т.е. сначала самое верхнее, потом все, что под ними при этом
процедуры рисования попутно обнуляют битики, и там где уже нули - там не рисуют.
Процедуры на асме, болеменее поспевают. Фишка в том, что они хоть и тормозят
немного, есть такой момент, зато мерцания никакого. У меня это было 640x480x16,
если взять твой режим - дык совсем всё замечательно, можно переписать все
процедуры так чтобы они рисовали не в видеопамять, а в буфер 64k, по байту на
точку, после чего на паскале процедура move, на другом языке - по своему
усмотрению, просто переносится 64к в видеопамять. В моём варианте просто в
видеопамять не перенести просто было, а то можно было бы тоже в буфере рисовать.
Причём от чего я совсем балдел - так это то, что таскаешь мышой окно,
перерисовывал я только верхнее окно, оставляя мусор на экране от его старого
положения, после того как окно бросил, обновляется фактически только фон.
Красиво получается. Можно было как в винде, засесть на таймер и по таймеру фон
обновлять, тогда фон бы периодически обновлялся не дожидаясь когда окно
опустится на финальное местоположение, то тогда пришлось бы немного
заморачиватья, хотя дос-функции из таймера бы юзать не пришлось бы, может быть и
легко бы заработало, но я так глубоко с этим проектом не зашёл.
Andrey
... Матушка лень зовет ...
--- GoldED+/386 1.1.4.7
* Origin: Всёфигня кроме пчёл,хотя пчёлы,еслиподумать,тоже фигня (2:5002/46.4)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/143013d4f142c.html, оценка из 5, голосов 10
|