ПрограммированиеФорумГрафика

[OpenGL] Быстрый вывод миллиона кружков в 2d

#0
3:20, 3 июля 2016

На моей видеокарте точки рисуются кружками, если установить параметр GL_POINT_SMOOTH.
Но на компьютере работодателя они рисуются квадратами. Что еще нужно сделать, чтобы этот способ гарантированно сработал?

Если же нет гарантий, то какие ещё есть способы быстро выводить около миллиона точек с возможностью масштаба изображения?
Знаю про возможность запилить простым шейдером на 2 строчки, но ввиду озвученного выше ограничения, думается мне, что это будет тормозно.

#1
4:01, 3 июля 2016

рисуй квадратики с текстурой кружка.

#2
4:51, 3 июля 2016

nes
ну увеличенный кружок будет фигово смотреться

#3
10:09, 3 июля 2016

vater
> ну увеличенный кружок будет фигово смотреться
Текстура должна быть максимального размера, чтобы только уменьшать ее

#4
10:41, 3 июля 2016

vater
> Знаю про возможность запилить простым шейдером на 2 строчки, но ввиду
> озвученного выше ограничения, думается мне, что это будет тормозно.
Какого ограничения? Считаешь квадрат расстояния от (0.5, 0.5) до текстурной координаты текущей точки. Если он меньше 0.25, то это внутри круга, иначе снаружи. Чтобы края были гладкими, можно сделать smoothstep для альфа канала.
Простой шейдер в несколько строчек. Тормозить нечему.

#5
14:47, 3 июля 2016

nes
> ну увеличенный кружок будет фигово смотреться
Делай discard во фрагментном шейдере при не попадании в круг. Попадание в круг можно проверять аналитически.

#6
18:07, 3 июля 2016

Плюсую дискард

#7
9:16, 7 июля 2016

Дискард там будет плохо работать - он слишком много оптимизаций убьет, и слишком мало пикселей срежет.
Инстансинг и 5-6-8-угольники обеспечат область определения, далее рисуем кружочек на пиксельном шейдере.

ПрограммированиеФорумГрафика

Тема в архиве.