Jump to content

Подавление эффекта мигания


Recommended Posts

Программирую движение круга, квадрата и т.п. Дело состоит вот в чем:

1. рисование объекта красным (к примеру цветом)

2. стирание (рисование черным)

3. Задержка

4. Изменение координат и снова 1-4

Дело в том, что рисунок почему то мигает! Как устранить этот неблагоприятный эффект?

Link to comment
Share on other sites

Бумер:

А как ему не мигать, если ты его стираешь, делаешь задержку, а потом снова рисуешь?

Задержку надо делать после рисования, а не после стирания.

Link to comment
Share on other sites

Вообщем люди придумали duble buffering ( и triple тоже ) из за этого

Идея состоится в том, что ты рисуеш гдето на другом месте, а потом картинку показиваеш на екран.

Потому что скопировать память ( т.е. весь рисунок ) всегда бистрее чем рисовать эго на екране

Link to comment
Share on other sites

Ну ладно ,если это простой объект, то ничего. А попробуйте например нарисовать ромашку в паскале, за базовую точку возьмем центр цветка, остальное привяжем к координатам этой точки. Далее в цикле рисуем, делаем задержку, стираем, рисуем в новом месте и т.д.

Происходит мигание причем очень заметное. Видно даже то, что первое рисуется, а что потом. Ну например в программе рисуем лепестки сначала, а потом закрашиваем середину желтым. Причем желтое накладывается на белое - и все это будет видно при мигании!!! Уменьшить мигание получается только увеличением задержки и увеличением приращения координат!

Похоже, что это всего лишь комп думает долговато, хотя я юзаю везде integer, а это целый тип, поэтому вычисления выполняются быстрее чем с вещественными числами - ускорять уже некуда!!!

кто нибудь знает как победить этот эффект?

Link to comment
Share on other sites

Double Buffering

Создаёшь bitmap, рисуешь в нём, а потом показываешь его на экране. Рисуешь в другом bitmap-е — и опять.

На Pascal я этого не делал, использовал OpenGL только, а там это почти автоматически :)

Edited by Rulchik
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...