Если все, что вам нужно, это рисовать пунктирные линии, просто измените с GL_LINE_STRIP на GL_LINES. Таким образом, открытый GL соединит вершины 1 и 2, 3 и 4, 5 и 6, но не 3 & 4 или 4 & 5, оставляя там пробелы. По сути, это будет пунктирная линия с половинным соотношением - грубый эквивалент glLineStipple (1, 0101);
IE: в массиве вершин
[0,0,1,1,2,2,3,3,4,4,5,5,6,6]
OpenGL соединит (0,0) с (1,1), но не соединит (1,1) с (2,2) [тогда как с GL_LINE_STRIP]. Затем он соединит (3,3) с (4,4), но НЕ (4,4) с (5,5). Окончательное соединение будет (5,5) - (6,6).
Вот как это выглядит, когда я это сделал:
Пунктирные линии на Android
Линия не является 50/50 пунктирной / пустой, потому что в моем случае она представляет позицию игрового объекта в каждом игровом кадре - и игровые кадры не обязательно имеют одинаковую длину, следовательно, несовместимое соотношение линия: пространство.
Код выглядит следующим образом:
публичная ничья (GL10 gl)
{
gl.glDisable (GL10.GL_TEXTURE_2D); * +1022 *
gl.glColor4f(color[0], color[1], color[2], color[3] / fade);
//pointsBuffer holds the points on the line
gl.glVertexPointer(2, GL10.GL_FLOAT, 0, pointsBuffer);
gl.glDrawArrays(GL10.GL_LINES, 0, points.length/2);
gl.glEnable(GL10.GL_TEXTURE_2D);
}
Альтернативной идеей создания более намеренно заданного шаблона является пропуск определенных вершин вместо рисования с помощью массива индексов (glDrawElements). Тем не менее, у меня нет примера того, чтобы показать вам. : /