2010-05-01 3 views
1

Мне интересно, как я могу создать градиент с несколькими остановками и направлением, если я создам полигоны. Сейчас я создаю градиенты, изменяя цвет вершин, но это ограничение. Есть ли другой способ сделать это?Полигональные градиенты с OpenGL

Благодаря

ответ

2

Один из вариантов, который у вас есть, - это визуализировать простой многоугольник с градиентом текстуры, который затем используется для текстурирования фактического многоугольника.

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

+0

Это приятное решение, я не уверен, что делать с шагами, хотя я надеюсь, что это будет – jmasterx

+0

@ user146780 Ха-ха да, честно говоря, я действительно не знаю, как сделать текстуру, но Я знаю, что это можно сделать. И, как вы, кажется, согласны, я думаю, что это работает теоретически. ; D –

1

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

+0

Но я хочу иметь возможность изменять вектор направления на ходу, чтобы фиксированная текстура не срезала его. (вроде градиента Photoshop) – jmasterx

+1

У вас должна быть возможность повернуть проекцию текстуры. –

1

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

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