Бумер Posted March 16, 2007 Report Share Posted March 16, 2007 Программирую движение круга, квадрата и т.п. Дело состоит вот в чем: 1. рисование объекта красным (к примеру цветом) 2. стирание (рисование черным) 3. Задержка 4. Изменение координат и снова 1-4 Дело в том, что рисунок почему то мигает! Как устранить этот неблагоприятный эффект? Link to comment Share on other sites More sharing options...
Тролль Posted March 16, 2007 Report Share Posted March 16, 2007 Бумер: А как ему не мигать, если ты его стираешь, делаешь задержку, а потом снова рисуешь? Задержку надо делать после рисования, а не после стирания. Link to comment Share on other sites More sharing options...
Darhazer Posted March 16, 2007 Report Share Posted March 16, 2007 Вообщем люди придумали duble buffering ( и triple тоже ) из за этого Идея состоится в том, что ты рисуеш гдето на другом месте, а потом картинку показиваеш на екран. Потому что скопировать память ( т.е. весь рисунок ) всегда бистрее чем рисовать эго на екране Link to comment Share on other sites More sharing options...
Бумер Posted March 16, 2007 Author Report Share Posted March 16, 2007 Cпасибо, и правда что то я стормозил.... Link to comment Share on other sites More sharing options...
Бумер Posted March 23, 2007 Author Report Share Posted March 23, 2007 Ну ладно ,если это простой объект, то ничего. А попробуйте например нарисовать ромашку в паскале, за базовую точку возьмем центр цветка, остальное привяжем к координатам этой точки. Далее в цикле рисуем, делаем задержку, стираем, рисуем в новом месте и т.д. Происходит мигание причем очень заметное. Видно даже то, что первое рисуется, а что потом. Ну например в программе рисуем лепестки сначала, а потом закрашиваем середину желтым. Причем желтое накладывается на белое - и все это будет видно при мигании!!! Уменьшить мигание получается только увеличением задержки и увеличением приращения координат! Похоже, что это всего лишь комп думает долговато, хотя я юзаю везде integer, а это целый тип, поэтому вычисления выполняются быстрее чем с вещественными числами - ускорять уже некуда!!! кто нибудь знает как победить этот эффект? Link to comment Share on other sites More sharing options...
Darhazer Posted March 23, 2007 Report Share Posted March 23, 2007 (edited) Double Buffering Создаёшь bitmap, рисуешь в нём, а потом показываешь его на экране. Рисуешь в другом bitmap-е — и опять. На Pascal я этого не делал, использовал OpenGL только, а там это почти автоматически :) Edited March 23, 2007 by Rulchik Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now