Как добавить светящийся эффект в линию для OpenGL?

Как я могу добавить светящийся эффект к линии, которую я рисую? Я использую OpenGL для Linux.

4 ответа

Вы можете реализовать эффект радиального размытия, описанный в уроке 36 Nehe. Основная идея состоит в том, чтобы визуализировать рисунок в текстуру и делать это N раз с небольшим смещением после каждого рендера, пока чертеж не будет готов к копированию в кадровый буфер.

Я написал небольшое демо, которое использует Qt и OpenGL. Вы можете увидеть оригинальный рисунок (без размытия) ниже:

Следующее изображение показывает рисунок с включенным эффектом размытия:

Я знаю, что это немного, но это начало.

Я тоже когда-то надеялся, что есть очень простое решение, но, к сожалению, оно немного сложное, по крайней мере, для начинающего.

Сегодня светящиеся эффекты реализуются независимо от API (D3D,OpenGL) с помощью пиксельных / фрагментных шейдеров. Обычно это включает несколько проходов рендеринга, когда вы визуализируете свою сцену, затем рендеринг прохода, где видны только "светящиеся объекты", затем вы применяете пиксельный шейдер в цвету и составляете их вместе.

Смотрите ссылку, предоставленную @Valmond для деталей

Редактировать:

Следует добавить, что это может быть достигнуто с помощью отложенного рендеринга, когда нормали, положения и другая информация, такая как "флаг свечения", отображается в текстуре, то есть сохраняется в различных компонентах текстуры. Затем шейдер будет считывать текстуры и выполнять молниеносные вычисления и эффекты пост-обработки за один проход, так как все необходимые данные доступны из этой визуализированной текстуры.

Проверьте это: http://developer.download.nvidia.com/books/HTML/gpugems/gpugems_ch21.html

Это легко объясняет, как сделать эффект свечения.

Без использования шейдеров вы также можете попытаться отрисовать текстуру и сделать радиальное размытие. В качестве отправной точки посмотрите NeHe-Tutorials.

Другие вопросы по тегам