Размытие с OpenGL? - PullRequest
       13

Размытие с OpenGL?

2 голосов
/ 17 июля 2010

Я использую OpenGL и рисую полигоны в 2D-виде. Как можно размыть многоугольник, не используя glsl, и только такие вещи, как буфер трафарета и прочее. Спасибо

Ответы [ 2 ]

4 голосов
/ 17 июля 2010

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

4 голосов
/ 17 июля 2010

Есть два быстрых и грязных способа. GLSL или Cg - безусловно, ваше лучшее решение, особенно если вам нужно какое-то приличное размытие (Gaussian, box, motion и т. Д.). Однако вы можете:

  • Рендеринг изображения с более низким разрешением, обычно с текстурой, а затем визуализация этой текстуры на экране с высоким разрешением. Это приведет к размытию изображения, но вам нужно использовать трилинейную или анистропическую фильтрацию, чтобы оно выглядело хорошо. Обычно этого не происходит, но это помогает.
  • Рендеринг изображения в текстуру, рендеринг один раз на экран с полной непрозрачностью, затем включение смешивания, уменьшение альфа и рендеринг изображения, сдвинутого влево немного, вправо немного, вверх немного, вниз немного ... и т. д. Для рендеринга спереди требуется низкая непрозрачность, но они будут эффективно размыть сцену. Вы также можете поиграть с режимами наложения, SrcColor / InvSrcColor или DstColor / InvDstColor могут быть полезны.

Есть несколько способов сделать это без шейдеров, но ни один из них не является оптимальным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...