2014-01-11 2 views
0

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

Теперь я хочу, чтобы рефакторинг выполнял мою функцию, что позволит подготовить данные для рисования пунктирного круга (что-то вроде этого http://www.andyhorner.com/wp-content/uploads/2012/04/dashedlines-24.jpg).

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

ответ

0

я хотел бы видеть два различных подхода нарисовать пунктирную окружность:

  1. Подготовьте точную геометрию черточек (я считаю, что это то, что вы имели в виду) и сделать эту геометрию нетекстурированным сплошным цветом. В этом случае буфер вершин содержит только атрибуты позиции. Вы можете использовать одну треугольную полосу или треугольники. При использовании полосы треугольника вам нужно будет повторить (индекс последней) вершины одной черточки и первую (первую) вершину следующей (это вставляет вырожденные треугольники, чтобы подделать примитивный перезапуск). Вы можете оценить размер буферов вершин и индексов, чтобы выбрать между одной треугольной полосой или треугольниками (как правило, выигрывает одна треугольная полоса). Я также предполагаю, что вы используете индексированную геометрию (glDrawElements + индексный буфер).

  2. Подготовьте геометрию полного круга, а затем нанесите на нее полупрозрачную 1D текстуру, чтобы отобразить тире. Очевидно, вы можете использовать одну полосу треугольника. Вам не нужен фальшивый примитивный перезапуск, но вам все равно нужно создавать вершины на границах тире. Буфер вершин содержит не только атрибуты позиции, но и соответствующие 1D текстурные координаты. И, конечно же, вам необходимо включить смешивание при рендеринге.

Оба подхода используют один призыв на рисование, чтобы отобразить весь пунктирный круг. Структурированный подход более сложный и медленный. Я бы пошел на 1. чисто геометрический подход с одной полосой треугольника.

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