У меня есть процесс, который накапливает в основном статические данные с течением времени - и многие из них - миллионы элементов данных. Возможно, что небольшие части данных могут время от времени меняться, но в основном они не меняются.Оптимизация визуализации данных на графическом процессоре?
Однако я хочу разрешить пользователю изменять способ просмотра этих данных как по форме, так и по цвету.
Есть ли способ, которым я мог хранить данные на графическом процессоре точно так же, как данные. Затем у вас есть несколько способов конвертировать эти данные в нечто, что можно сделать на графическом процессоре. Затем пользователь может выбирать между этими алгоритмами, и мы поменяем его эффективно, не касаясь данных вообще. Кроме того, идентификаторы цвета будут отображаться в данных, но пользователь может изменить цвет, к которому должен соответствовать каждый идентификатор, опять же, не касаясь данных.
Так, например, может быть, есть следующие данные:
[1000, 602, 1, 1] [1003, 602,5, 2, 2]
Примечание: данные не Вершины , а скорее может потребовать, чтобы некоторые вычисления или поиск были преобразованы в вершины.
Пользователь может выбирать между алгоритмами визуализации. Предположим, каждый из них будет отображать по 2 куба в каждом (0, 602, 0) и (3, 602,5, 100). Пользователь выбирает этот цветный идентификатор 1 = синий и 2 = зеленый. Таким образом, куб начала показан как синий, а другой - зеленый.
После этого без каких-либо изменений в данных пользователь выбирает другую визуализацию, и теперь сферы отображаются на (10, 602, 10) и (13, 602,5, 20), а цвета различаются, поскольку пользователь изменил цветное отображение.
Еще одна визуализация может показать линии между всеми элементами данных или прямоугольника для каждого набора 4 и т.д.
ли приведенное выше описание кое-что может быть сделано прямым путем? Как это лучше всего сделать?
Обратите внимание, что мы будем добавлять новые данные, добавляя к концу, много. Вероятно, разрывы тысяч в секунду. Модификации существующих данных будут более редкими, и приемлемый удар по этим случаям будет приемлемым. Алгоритм смены пользователей и цветовое сопоставление будут относительно редкими.
Я бы предпочел сделать это, используя API кросс-платформы (через OS и GPU), поэтому я предполагаю OpenGL.
Спасибо! Есть ли способ оптимизировать добавление к VBO? Так как я могу добавлять данные очень быстро к ним время от времени. Кроме того, в геометрическом шейдере у него есть доступ к более чем одной точке за раз, чтобы он мог создать одну форму для каждой точки в одном случае, но в других случаях она создавала бы одну форму на несколько точек? – mentics
'glBindBuffer' принимает параметр * target * (который подсказывает, будет ли этот VBO содержать вершинные или индексные данные). 'glBufferData' принимает параметр * use * (который указывает, являются ли данные статическими, динамическими или потоковыми, и будет ли приложение читать, копировать или рисовать). –
Кроме того, какая точная комбинация подсказок даст ** вам ** наилучшая производительность может быть обнаружена только путем профилирования. Это действительно сводится к версии вашего оборудования + OpenGL. –