Как бороться с мерцанием изображения?
|
|
TheWickerMan | Дата: Четверг, 20 Декабря 2012, 19:33 | Сообщение # 1 |
частый гость
Сейчас нет на сайте
| UPD: Подскажите пожалуйста, как еще можно избавится от мерцания изображения, кроме использования двойной буфферизации? Дело в том, что при его использовании мерцание становится гораздо меньше, но убирается не полностью. Если можно, подскажите пожалуйста решение для С++
Богам спешить некуда - у них впереди вечность.
Сообщение отредактировал TheWickerMan - Четверг, 20 Декабря 2012, 20:12 |
|
| |
Archido | Дата: Четверг, 20 Декабря 2012, 19:44 | Сообщение # 2 |
Сэнсэй
Сейчас нет на сайте
| Надо больше кода, чтобы посмотреть где и как создается объект, где изменяются его координаты + где вызывается его же отрисовка. Так будет понятнее.
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
|
|
| |
TheWickerMan | Дата: Четверг, 20 Декабря 2012, 20:10 | Сообщение # 3 |
частый гость
Сейчас нет на сайте
| Боже ну я и болван Сам нашел ошибку, тупейшая была) Я работаю в Embarcadero, проблемный код находился в функции OnKeyPress. Сейчас хотел выложить код и увидел что у меня там два раза повторяется if(Key=="1") и с разным кодом внутри)) Ей богу, для решения большинства моих проблем с С++ нужно просто больше спать и смотреть на код свежими глазами.
Добавлено (20.12.2012, 20:10) --------------------------------------------- Обновил первый пост, помогите пожалуйста с еще одной проблемой
Богам спешить некуда - у них впереди вечность.
Сообщение отредактировал TheWickerMan - Четверг, 20 Декабря 2012, 20:12 |
|
| |
Archido | Дата: Четверг, 20 Декабря 2012, 20:12 | Сообщение # 4 |
Сэнсэй
Сейчас нет на сайте
| Quote (TheWickerMan) Боже ну я и болван Сам нашел ошибку, тупейшая была) Я работаю в Embarcadero, проблемный код находился в функции OnKeyPress. Сейчас хотел выложить код и увидел что у меня там два раза повторяется if(Key=="1") и с разным кодом внутри)) Ей богу, для решения большинства моих проблем с С++ нужно просто больше спать и смотреть на код свежими глазами. Ну что тут скажешь - бывает
Quote (TheWickerMan) Простите, не могу найти как удалить тему. Никак.
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
|
|
| |
TimKruz | Дата: Четверг, 20 Декабря 2012, 20:58 | Сообщение # 5 |
старожил
Сейчас нет на сайте
| TheWickerMan, порча тем (слишком сильное изменение содержания первого и последующих сообщений) запрещена, можно в баню попасть. Новый вопрос нужно было задать в следующем сообщении (#3) или создать новую тему. А то теперь непонятно, что означают второе и третье сообщения. Удалить тему могут только модераторы (и старше), но только если тема слишком сильно правила нарушает или совершенно бесполезна; обычно темы чистят и помещают в раздел "корзина", а не удаляют совсем.
Quote (TheWickerMan) Подскажите пожалуйста, как еще можно избавится от мерцания изображения, кроме использования двойной буфферизации? Дело в том, что при его использовании мерцание становится гораздо меньше, но убирается не полностью. Если можно, подскажите пожалуйста решение для С++ С помощью чего делаешь вывод графики? Двойная буферизация спасает от мерцания в 99% случаев. Если, конечно, процедура вывода итоговой картинки выполняется достаточно быстро (доли миллисекунд), а компьютер и монитор достаточно современные. Так что, скорей всего, у тебя функция вывода картинки сильно тормозит, либо ты неправильно используешь буфер. Если пишешь для Windows, но не используешь DirectX/OpenGL - используй функцию BitBlt из WinAPI. А ещё, если выводишь прямо на канву формы - не помешает отключить её автообновление (и обновлять вручную), т.к. автообновление может затирать твою картинку и она будет мигать цветом формы.
|
|
| |
TheWickerMan | Дата: Пятница, 21 Декабря 2012, 12:36 | Сообщение # 6 |
частый гость
Сейчас нет на сайте
| Quote (TimKruz) С помощью чего делаешь вывод графики? Двойная буферизация спасает от мерцания в 99% случаев. Если, конечно, процедура вывода итоговой картинки выполняется достаточно быстро (доли миллисекунд), а компьютер и монитор достаточно современные. Так что, скорей всего, у тебя функция вывода картинки сильно тормозит, либо ты неправильно используешь буфер. Если пишешь для Windows, но не используешь DirectX/OpenGL - используй функцию BitBlt из WinAPI. А ещё, если выводишь прямо на канву формы - не помешает отключить её автообновление (и обновлять вручную), т.к. автообновление может затирать твою картинку и она будет мигать цветом формы. Да, вероятно дело в скорости. Спасибо, попробую WinAPI
Богам спешить некуда - у них впереди вечность.
|
|
| |