Что самый эффективный путь состоит в том, чтобы управлять большим набором строк в OpenGL?

Это работает.

Использование лямбды:

result = list(map(lambda x: x['name'] if x['Age'] == "10" else None, listOfDict ))
result = [x for x in result if x is not None]
print(result)
6
задан e.James 1 December 2008 в 21:25
поделиться

4 ответа

Можно использовать простой подход, такой как использование дисплейного списка (glNewList/glEndList)

Другая опция, которая немного более сложна, состоит в том, чтобы использовать Буферные Объекты Вершины (VBOs - GL_ARB_vertex_buffer_object). У них есть преимущество, что они могут быть изменены динамично, тогда как дисплейный список не может.

Они в основном обрабатывают все Ваши данные/преобразования в пакетном режиме, и их выполняются на GPU (предполагающий, что Вы используете аппаратное ускорение), приводящий к более высокой производительности.

8
ответ дан 8 December 2019 в 12:23
поделиться

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

2
ответ дан 8 December 2019 в 12:23
поделиться

Буферные Объекты вершины, вероятно, что Вы хотите. После того как Вы загружаете исходный набор данных в, можно сделать модификации к существующим блокам с glBufferSubData().

Если Вы добавляете дополнительные линейные сегменты и переполняете размера Вашего буфера, необходимо будет, конечно, сделать новый буфер, но это не отличается, чем необходимость выделить новый, больший блок памяти в C, когда что-то растет.

Править: Несколько примечаний, демонстрирующихся списки, и почему не использовать их:

  1. В OpenGL 3.0 удерживаются от использования дисплейные списки, так использование их не является прямо совместимыми прошлыми 3.0 (2,1 реализации будут вокруг некоторое время, конечно, таким образом, в зависимости от Вашей целевой аудитории это не могло бы быть проблемой),
  2. Каждый раз, когда Вы изменяете что-либо, необходимо восстановить весь дисплейный список, который побеждает всю цель дисплейных списков, если вещи часто изменяются.
7
ответ дан 8 December 2019 в 12:23
поделиться

Мое предложение состоит в том, чтобы попытаться использовать график сцены, некоторую иерархическую структуру данных для строк/кривых. Если у Вас будут огромные модели, то производительность будет затронута, если у Вас будет простой список строк. С графиком/древовидной структурой можно проверить легко, какие объекты видимы и которые не являются при помощи ограничивающих объемов. Также с scenegraph можно применить преобразование легко и конфигурации повторного использования.

2
ответ дан 8 December 2019 в 12:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: