Как плавно изменять ширину в разных точках кривой Безье, нарисованной с помощью glDrawArray () - PullRequest
1 голос
/ 26 апреля 2011

Я успешно отрисовываю кривую Безье в режиме реального времени, когда пользователь рисует пальцем (я изменил glpaint).Я могу отрегулировать ширину линии непосредственно перед рисованием.Это приводит к рисованию всей линии на этой новой ширине, но остается постоянной на этой ширине в течение линии.Но я хочу плавного изменения ширины по всей этой линии.Я также могу динамически регулировать ширину кисти, когда пользователь рисует, однако это приводит к появлению пятнистой линии по следующим причинам.

Кривая отображается в точках с помощью glDrawArray ().Когда пользователь рисует, примерно для каждых нескольких точек соприкосновения моя функция Безье вычисляет потенциально сотни точек для рендеринга, и в этот момент он отправляет эти точки в функцию gldrawarray для рендеринга.Проблема состоит в том, что дисперсия ширины действительно должна быть нанесена вдоль этих точек динамически и должна иметь возможность изменять ширину кисти в течение рисования этих пройденных точек, но потому что они отправляются в функцию как целая группа, которая должна быть нарисованадо сих пор с помощью glDrawArray достижение плавного изменения ширины по всей линии пока неясно.

Вы знаете способ достижения переменной ширины кисти в реальном времени, по одной кривой Безье, нарисованной точками, и в идеаленарисовано с помощью glDrawArray (), без использования треугольников и т. д.

1 Ответ

3 голосов
/ 28 апреля 2011

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

Таким образом, вы в конечном итоге строите замкнутый путь вокруг кривой Безье, таким образом: Variable width line based on bézier curve

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

Я надеюсь, что эта грубая диаграмма поясняет описание выше!

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