Как нарисовать «светящуюся» линию в OpenGL ES - PullRequest
8 голосов
/ 09 октября 2011

enter image description here

Не могли бы вы поделиться кодом (на любом языке) о том, как рисовать текстурированную линию (которая была бы гладкой или имела эффект свечения, синяя линия, четыре точки), состоящая из множества точек, напримерна прикрепленном изображении с использованием OpenGL ES 1.0.

Я пытался текстурировать GL_LINE_STRIP с текстурой 16x16 или 1x16 пикселей, но безуспешно.

1 Ответ

5 голосов
/ 10 октября 2011

В ES 1.0 вы можете творчески использовать рендеринг в текстуру для достижения желаемого эффекта, но это, вероятно, будет дорогостоящим с точки зрения скорости заполнения.Gamasutra опубликовала (старую) статью о том, как было достигнуто свечение в игре Tron 2.0 - вы захотите обратить особое внимание на комментарии DirectX 7.0, поскольку это, как и ES 1.0, был фиксированный конвейер.В вашем случае вы, вероятно, хотите просто отобразить гауссовское изображение, а не смешивать его с оригиналом, поскольку свечение - это все, что вас интересует.

Мое резюме статьи:

  • визуализирует все линии текстуры как обычные сплошные линии роста волос.Назовите эту текстуру исходной текстурой.
  • примените к ней линейное горизонтальное размытие, взяв исходную текстуру, которую вы только что визуализировали, и нарисовав ее, скажем, пять раз, для другой текстуры, которую я назову текстурой горизонтального размытия.Нарисуйте одну копию со смещением x = 0 с непрозрачностью 1,0, нарисуйте еще две копии - одну при x = +1 и одну при x = -1 - с непрозрачностью 0,63 и две последние копии - одну при x = +2 и однупри х = -2 с непрозрачностью 0,17.Используйте аддитивное смешивание.
  • примените к этому линейное вертикальное размытие, взяв текстуру горизонтального размытия и выполнив в основном те же шаги, но со смещением по y вместо смещения по x.

Эти числа непрозрачностибыли получены из 2-го гауссова ядра на этой странице .Поиграйте с ними, чтобы повлиять на падение вашей внешней линии.

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

...