Рисуем график в окне. Мы обновляем кривые каждые 50 мс значениями, полученными от оборудования, например, датчиков. Нам нужно отобразить значения в графическом формате. Таким образом, мы обновляем график каждые 50 мс. Это приводит к мерцанию. Мы пишем код в X11. Есть ли способ избежать мерцания графического рисунка в X11. Заранее спасибо.
Как избежать мерцания в графических чертежах с помощью X11
Ответы (2)
Ключевое слово здесь — двойная буферизация. Но я не знаю, предлагает ли x11 это из коробки или вам нужно реализовать это самостоятельно, поэтому я оставлю поиск в гугле для вас ;)
Кроме того, вы можете рассмотреть возможность обновления реже. Возможно, достаточно обновиться с периодом 250, 500 или 1000 мс? Конечно, это зависит от вашего варианта использования.
Пожалуйста. Хм. Что ж, в таком случае я бы проверил настройки X-сервера для машин, на которых он будет работать. Недавно я получил новую видеокарту и обнаружил, что приложения openGL запускали большее количество кадров в секунду, но качество было ужасным — был видимый «разрыв» изображения — вы могли постоянно видеть комбинацию последнего и текущие кадры одновременно. После того, как я включил ожидание VSynch в настройках XServer, проблема исчезла. Однако это больше похоже на проблему, с которой я сталкивался в MS Windows в прошлом. В этом конкретном случае, каждый раз, когда я отправлял новое изображение в элемент управления, окна перерисовывали фон окна/диалога, который находился под окном изображения. Таким образом, вместо того, чтобы просто заменить старое изображение, оно стерло изображение до стандартного серого цвета, прежде чем перейти к замене изображения (гррр). Если у вас есть доступ к достаточно быстрому программному обеспечению для записи экрана, вы можете снимать видео во время работы приложения, а затем воспроизводить видео кадр за кадром. С другой стороны, вы можете получить некоторую поддержку, если будете искать «отключить перерисовку/стирание фона окна X11» или что-то подобное. :)
Думаю, это также будет зависеть от того, использовали ли вы Gtk+, wxWidgets или просто сырой код X11.