Использование Motion Blur на OpenGL ES - PullRequest
0 голосов
/ 13 марта 2012

Я новичок в текстурировании OpenGL ES 1.1 (для IOS), и у меня есть проблема с созданием эффекта размытия в движении. Во время поиска в Google я обнаружил, что в разные моменты времени я должен визуализировать свою сцену в нескольких текстурах, а затем нарисовать все эти текстуры на экране с различными значениями альфа. Но проблема в том, что я не знаю, как все это реализовать! Итак, мои вопросы:

  1. Как нарисовать 2D текстуру на экране? Должен ли я сделать квадрат и наложить на него свою текстуру? Или, может быть, есть способ нарисовать текстуру непосредственно на экране?
  2. Как нарисовать несколько текстур (одна на другую) на экране с разными значениями альфа?

Я уже выдвинул некоторые идеи, но я не уверен, верны они или нет. Заранее спасибо!

1 Ответ

2 голосов
/ 13 марта 2012

Ну, конечно, первый совет: разберитесь в основах, прежде чем пытаться делать сложные вещи. Кроме этого:

  1. Да, действительно, чтобы нарисовать полноэкранную текстуру, вы просто рисуете текстурированный квадрат размером с экран. В этом случае хорошей идеей будет ортографическая проекция, облегчающая выравнивание экрана квадратора и его правильное определение размеров. Для получения текстур в первую очередь (путем рендеринга в них) FBOs могут быть полезны, но я не уверен, что они поддерживаются на устройствах ES 1, в противном случае старый добрый glCopyTexSubImage2D подойдет тоже, хотя требуется операция копирования.

  2. Ну, вы просто рисуете несколько текстурированных четырехугольников (см. 1) один над другим. Вы можете настроить текстурное окружение , чтобы масштабировать цвет текстуры с помощью основного цвета квада (glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE)) и придать вашим квадрам цвет (1, 1, 1, alpha) (конечно, освещение должно быть отключено). Кроме того, вы должны включить альфа-смешивание (glEnable(GL_BLEND)) и использовать соответствующую функцию смешивания (glBlendFunc(GL_SRC_ALPHA, GL_ONE) должно делать).

Но если все эти термины ничего вам не говорят, вам лучше сначала изучить основы, используя хороший учебный ресурс, прежде чем углубляться в более сложные эффекты.

...