Я должен отображать большие количества частиц. Эти частицы представляют собой простые неструктурированные квадрациклы (на самом деле квадраты). О, и они все время двигаются, так как они - частицы.Оказание тысяч движущихся квадроциклов
Я рассмотрел 2 варианта, но поскольку я не эксперт OpenGL, я не знаю, что лучше.
Используйте VBOs для рендеринга их всех.
Плюсы: быстрее, чем немедленный режим.
Против: (Я не знаю много о VBOs, но) из того, что я собираю, координаты квадроциклов должны храниться в некотором буфере в ОЗУ ... и все эти координаты должны быть вычислены CPU. Поэтому для частицы P1 (x, y) мне пришлось бы вычислить 4 других координаты (P2 (x-1, y-1), P3 (x-1, y + 1), P4 (x + 1, y + 1) , P5 (x + 1, y-1)) - это большая работа для процессора!Используйте список отображения: Сначала создайте крошечный список отображения для одного квадратного квадрата. Затем, чтобы сделать каждую частицу примерно
pushMatrix, glTranslate, callList, popMatrix
.
Плюсы: мне не нужно вычислять 4 координаты вручную - glTranlate делает это.
Предположительно, списки отображения быстрее, чем VBOs.
Минусы: они быстрее, чем VBOs, когда они содержат только один квад?
Имейте в виду: я звоню OpenGL вещи из Java, так что нет гладкий способ преобразования Java массивов в GPU массивов (все должно быть сохранено в промежуточных FloatBuffers до отчисления).
Возможно ли это? – Aesthete