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