Лучший способ построить диаграмму рассеяния с большим количеством точек данных на C ++ с использованием OpenGL

Я пишу программу на C ++, которая получает данные четырехмерных точек через сокет UDP, а затем отображает данные в 6 отдельных 2D точечные диаграммы. Например, если мы назовем размеры: A, B, C, D, шесть двумерных графиков будут AxB, AxC, AxD, BxC, BxD и CxD. В течение нескольких часов программа набирает ~ 50К баллов.

В настоящее время я рисую каждую точку один раз, используя немедленный режим. Я не очищаю буфер между вызовами отрисовки, поэтому ранее нанесенные точки сохраняются до тех пор, пока буфер не будет очищен. Я не доволен этим методом, так как немедленный режим работает медленно и не рекомендуется. Когда мне нужно очистить буфер, например, при изменении размера окна, я теряю все ранее нанесенные на график данные. Я хотел бы предложить решение, позволяющее сохранять данные после очистки буфера. Кроме того, было бы неплохо, если бы график можно было легко масштабировать с изменением размеров окна.

Я думал о поддержании массива вершин (с двумя измерениями) для каждой системы координат, но это потребовало бы 6 отдельных массивов и требовало В 3 раза больше памяти о поддержании массива со всеми четырьмя измерениями.

Правильно ли я думаю об этом? Каково правильное решение этой проблемы?

Конечная цель - создать приложение, которое отображает данные как можно ближе к реальному времени.

Править Можно ли продолжить построение точек по одному по одному по мере их поступления, и когда мне нужно изменить размер экрана, захватить изображение на экране и затем отобразить его версию с измененным размером?

5
задан slayton 22 September 2011 в 20:06
поделиться