Толстые пунктирные линии в OpenGL

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

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

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

Но это работает только если при триангуляции не рассчитывать митер.

введите сюда описание изображения

При добавлении же митера, паттерн растягивается. Что логично, ведь длина внешнего края отличается о длины внутреннего.

введите сюда описание изображения

Как добиться такого результата? введите сюда описание изображения


Ответы (0 шт):