@black_list_man

Как нарисовать толстые пунктирные линии в OpenGL?

Я использую триангуляцию для рисования толстых линий. Каждый сегмент превращается в прямоугольник, состоящий из двух треугольников.
609d4b112c8a2938836966.png
Далее, для того чтобы добавить пунктир, я создаю текстуру из одного альфа канала, которая описывает паттерн. Чтобы паттерн не начинался заново на каждом сегменте, я рассчитываю параметр lineSoFar (длина линии от начала), который выступает по сути в качества текстурной координаты. Во фрагментном шейдере использую значение альфа-канала чтобы определить где штрих а где пропуск.

float a  = texture2D(u_tex, v_normal/u_tex_len).a;
gl_FragColor = u_color*a;

Но это работает только если при триангуляции не рассчитывать митер.
609d4c3852c67820002174.png
При добавлении же митера, паттерн растягивается. Что логично, ведь длина внешнего края отличается о длины внутреннего.
609d4bea1d5a8438429689.png
Как добиться такого результата? 609d4c889345a780776122.png
  • Вопрос задан
  • 141 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы