2017-01-23 10 views
0

Я пытаюсь реализовать строчный штрих (пунктирная линия) с OpenGL ES2.0 и нашел много потоков по этой теме. Но примеров не было. Кто-то сделал это раньше и может помочь мне с реализацией?Строка с OpenGL ES

ответ

1

Там нет прямой поддержки пунктирных линий в OpenGL ES, так что общие подходы:

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

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

+0

Я думаю, что последнее также дает вам лучший контроль над толщиной линии и сглаживанием. – Columbo

+0

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

+0

http://korkd.com/2012/02/15/dashed-lines/ –

0

Вариант третий, кроме тех, что указаны solidpixel, заключается в использовании текстурированной линии; шейдер фрагмента для строки может получать изменения и образцы текстур точно так же, как и любой другой шейдер фрагмента. Поэтому поставьте координату текстурирования в диапазоне от x = 0 до x = k * (length of line), затем проведите образец текстуры, чтобы получить цвет фрагмента.

Поведение на OpenGL при визуализации линии отличается от поведения при рендеринге квада: тонкий квадратик по диагонали может пропускать центры фрагментов, тогда как линия всегда будет рисовать непрерывный набор фрагментов.

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

+0

Спасибо, эта опция работает для простых строк. Но когда я пытаюсь выделить две строки (пропуская три вертикальные позиции), текстурирование не работает, потому что оно связано с первой строкой. Во второй строке нет постоянной фигуры. –

+0

Я думаю, что было бы хорошо, если координата текстуры в каждой точке вычисляется от общего расстояния по всем линиям полосы до этой точки. Поэтому при создании геометрии сохраняйте совокупную сумму. – Tommy

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

  • Нет связанных вопросов^_^