Как управлять положением частиц с помощью шейдеров в OpenGL ES2 на Android

1

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

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

чтобы сделать мой вопрос понятным, например, я хочу реализовать урок NeHe 19 (см. DrawGLScene урока 19) с шейдером....

Полный код моей работы можно найти ниже для справки

1) Нет шейдеров

2) С шейдерами

  • 0
    Сначала объясните, почему вам нужна предыдущая позиция, не ясно, насколько она важна для остальной информации, которую вы предоставили.
  • 0
    без использования шейдеров, я обновил положение каждой частицы в цикле for и сохранил переменную «жизнь», когда жизнь достигнет нуля, я сбросил положение в центр (откуда частицы текут). если вы хотите увидеть код, я выложу его
Показать ещё 6 комментариев
Теги:
opengl-es
opengl-es-2.0

2 ответа

2
Лучший ответ

Thanx everyone,

я обнаружил решение после борьбы за полный день...

теперь я делаю все вычисления в вершинном шейдере в зависимости от времени

Я рассчитываю, что время у частицы будет умирать и мода с текущим временем даст измененный временной интервал...

в принципе, каждая частица снова будет жить своим временем жизни снова n

код можно найти по адресу каталог кодов Google

Thanq все для попытки решить мою проблему

0

Вы должны обновить LifeTime из партии в Draw при каждом розыгрыше, а затем передать его в шейдер с GLES20.glVertexAttribPointer как "attribute float a_lifetime;", например.

посмотрите на этот источник SOURCE

  • 0
    спасибо, я взял ту же идею из источника, который вы упомянули, но мой вопрос был, как только время жизни достигнет нуля, как изменить положение частицы в центре (для непрерывного потока частиц), так как время жизни будет случайным в моем случае. поэтому каждая частица умрет в разное время, поэтому нужно порождать (позиционировать их как источник) их по отдельности

Ещё вопросы

Сообщество Overcoder
Наверх
Меню