Я пишу программу на С++, которая получает данные 4-х мерных точек через сокет UDP, а затем отображает данные в 6 отдельных 2D-диаграммах рассеяния. Например, если мы назовем размеры: A, B, C, D, шесть 2D-графиков будут AxB, AxC, AxD, BxC, BxD и CxD. В течение нескольких часов программа набирает ~50 тысяч баллов.
В настоящее время я наношу каждую точку один раз, используя немедленный режим. Я не очищаю буфер между вызовами отрисовки, поэтому ранее нанесенные точки сохраняются до тех пор, пока буфер не будет очищен. Я не доволен этим методом, так как немедленный режим медленный и устарел. Когда мне нужно очистить буфер, например, при изменении размера окна, я теряю все ранее нанесенные данные. Я хотел бы придумать решение, которое позволяет сохранять данные после очистки буфера. Кроме того, было бы неплохо, если бы график можно было легко масштабировать с изменением размеров окна.
Я думал о поддержке массива вершин (с двумя измерениями) для каждой системы координат, но для этого потребовалось бы 6 отдельных массивов и в 3 раза больше памяти, чем для поддержки массива со всеми четырьмя измерениями.
Правильно ли я думаю об этом? Каково правильное решение этой проблемы?
Конечная цель — иметь приложение, отображающее данные как можно ближе к реальному времени.
Редактировать Можно ли продолжать рисовать точки одну за другой по мере их поступления, а когда мне нужно изменить размер экрана, захватить изображение экрана, а затем отобразить версию этого изображения с измененным размером?