У меня есть приложение, которое проводит повышенные линии представления 3-й карты, которые показывают различные функции. Я портирую карту на архитектуру OpenGL-ES, но испытываю немного затруднений при разработке, как отобразить пунктирные линии.
Делая большой поиск с помощью Google, я нашел много ссылок на идею, что проведение пунктирных линий и полигонов было удалено от OpenGL-ES, поскольку они могут быть легко эмулированы с помощью треугольников структур. Это является большим, но я не могу найти никого, который на самом деле делает эту эмуляцию и/или имеет описание включенных шагов.
Примером, одной проблемы, я встретился с попыткой моделировать это понятие, является перспектива, сжимает мои строки к невидимой операции, когда они идут к горизонту. Используя LINE_STRIP, этого не происходит, и строки остаются постоянной шириной в карте.
Любой совет относительно того, как достигнуть штриховых строк постоянной ширины в виде в перспективе, очень ценился бы.
Я считаю, что вы можете применить текстуру в линию, а не просто треугольник. Вам необходимо установить координаты текстуры для каждого конца строки; Текстура будет интерполирована линейно вдоль линии.
Эффективность этого решения должна быть инвариантом того, используете ли вы строки или линии линии - строчные полосы - это просто способ создавать строки с меньшим количеством вершин.
Существует еще одна проблема: тенденция к узоре текстуры, чтобы стать компактной, как линия уходит от камеры. Это происходит, потому что интерполяция координат текстуры - это перспектива - правильная даже для линий (см. Раздел 3.5 Spec GL).
Есть два способа обойти это:
Если вы можете рассчитать координату «q» для вашей текстуры, который отменяет перспективу, вы можете восстановить текстурирование экрана. Эта техника, вероятно, слишком активна - дорого.
Вы можете проецировать текстуру в космическом пространстве глаз (например, Gltexgen).
Генерация координат текстуры, конечно, не доступна в GLES 1.1, но если вы используете вершины по массиву, вы можете подделать его с помощью:
Недостатком этого метода заключается в том, что структура текстуры будет в непосредственном пространстве экрана - то есть текстура не будет работать по линиям.