Вы должны сгруппировать списки вершин:
import pyglet
window = pyglet.window.Window()
main_batch = pyglet.graphics.Batch()
grp1 = pyglet.graphics.Group()
grp2 = pyglet.graphics.Group()
p1 = [ 300, 400, 300, 400, 162, 408, 303, 453, 300, 400, 300, 400]
p2 = [ 500, 400, 500, 400, 558, 315, 586, 372, 500, 400, 500, 400]
main_batch.add(len(p1) // 2, pyglet.gl.GL_LINE_STRIP, grp1, ("v2i", p1))
main_batch.add(len(p2) // 2, pyglet.gl.GL_LINE_STRIP, grp2, ("v2i", p2))
@window.event
def on_draw():
window.clear()
main_batch.draw()
pyglet.app.run()
Вершины в 1 группе считаются одним списком вершин. См. pyglet.graphics , поэтому списки вершин можно добавить в другую группу. Каждая группа - это отдельная я sh.
На мой взгляд, документация неверна. Подход будет работать для GL_TRIANGLE_STRIP
или GL_QUAD_STRIP
, потому что примитивные типы рисуют закрашенный многоугольник. Если площадь (части) многоугольника равна 0, то вообще ничего не рисуется.
Примитив линии GL_LINE_STRIP
всегда будет рисовать линию между последовательными вершинами.
См. OpenGL Примитив .
Например GL_TRIANGLE_STRIP
:
p1 = [ 300, 400, 300, 400, 162, 408, 303, 453, 300, 400, 300, 400]
p2 = [ 500, 400, 500, 400, 558, 315, 586, 372, 500, 400, 500, 400]
main_batch.add(len(p1) // 2, pyglet.gl.GL_TRIANGLE_STRIP, None, ("v2i", p1))
main_batch.add(len(p2) // 2, pyglet.gl.GL_TRIANGLE_STRIP, None, ("v2i", p2))