2008-10-07 4 views
3

Я работаю над игрой для iPhone, которая проходит на поверхности океана. Может ли кто-то рекомендовать образец кода или учебники для реализации волн или ряби в OpenGL?Как реализовать эффект поверхности океана с помощью OpenGL ES 1.1?

Как я уже писал, iPhone поддерживает OpenGL ES 1.1, поэтому поддержка шейдеров и других причудливых эффектов отсутствует.

Мне не нужно ничего необычного. Например, мне не нужны отражения. Я не хочу перегружать устройство. Мне просто нужно что-то похожее на океан. (Но было бы неплохо, если бы это выглядело так же хорошо, как Koi Pond.)

ответ

3

iPhone очень похож на GPU с 1999 года по возможностям (например, NVIDIA Riva TNT 2). Таким образом, ваши самые реалистичные варианты просто смешивают несколько прокручиваемых текстур.

E.g. имеют одну текстуру с некоторым «волновым рисунком». Установите его на две стадии текстуры и прокрутите их в разных направлениях/скоростях (через матрицу текстуры). Комбинированные компоновщики текстур, чтобы добавить текстуры вместе для окончательного результата (или выполнить некоторую другую операцию, массу возможностей здесь).

3

Добавить вместе члены вида:

a * sin(b * x + c * y + d * t) 

Каждый такой член производит скучный набор прямых волн таким образом: a амплитуда (высота) вклад этих волн, b и c управления относительное направление и частота (интервал) волн, а d сдвигает волны вдоль в этом направлении, так как изменяется t (имитированное время).

Эксперимент с несколькими терминами этой формы, держа t постоянный, чтобы получить волнистую поверхность. Затем вы можете «настроить» коэффициенты, чтобы получить необходимую степень шероховатости. Как только вы найдете несколько наборов коэффициентов, которым вы довольны, пусть t может меняться, чтобы привести его в движение.

+0

Куда вы поместите эту формулу в код? Каков результат? Изображение или что? – Thanks 2009-05-27 10:30:51

Смежные вопросы