Вы не можете рисовать линии, точки и треугольники WebGL в одном вызове. Вы можете генерировать точки и линии из треугольников, а затем просто рисовать треугольники в одном вызове отрисовки, в котором есть треугольники, которые создают точки, и треугольники, отрисовывающие линии и треугольники, которые рисуют другие вещи, за один вызов отрисовки.
Не хороший пример, но для развлечения вот вершинный шейдер, который генерирует точки и линии из треугольников на лету .
Также есть это пример создания линий из треугольников
Насколько креативно вы хотите работать со своими шейдерами по сравнению с работой на процессоре, зависит только от вас, но как правило, рисовать линии треугольниками, как указывалось в предыдущей статье, поскольку линии WebGL, как правило, могут иметь толщину всего в один пиксель.
Также принято рисовать точки треугольниками, поскольку
WebGL требуется только для поддержки точек размером 1
При рисовании треугольниками этот предел снят
Точки WebGL всегда выровнены по экрану
Треугольные точки гораздо более гибкие. Например, вы можете повернуть точку и ориентировать ее в 3D. Вот несколько точек из треугольников
Точки на основе треугольника можно масштабировать в 3D без дополнительной работы
Другими словами, точка на основе треугольника в трехмерном пространстве будет масштабироваться с расстоянием от камеры с использованием стандартной трехмерной математики. Точка WebGL требует, чтобы вы вычислили размер, которым должна быть точка, чтобы вы могли установить gl_PointSize
, и поэтому требуется дополнительная работа, если вы хотите, чтобы она масштабировалась со сценой.
Нередко смешивать точки, линии и треугольники в одном вызове отрисовки, но это невозможно ни при каких условиях.