绘制大量正方形的最快方法?

2 投票
1 回答
573 浏览
提问于 2025-04-17 20:58

我有一个叫做 squares 的列表,里面存放着一些方形对象。我一个一个地遍历这个列表,逐个画出每个方形。我在想有没有更快的方法来做到这一点?我觉得 GL_QUAD 可能不行,因为它是填充整个方形,而我只想画出轮廓。

这是我的代码

    for sq in squares:
            x1, y1 = sq.point
            x2, y2 = x1 + sq.length - 1, y1 + sq.length - 1
            batch.add(2, pyglet.gl.GL_LINES, None, ('v2i', (x1, y1, x1, y2)))
            batch.add(2, pyglet.gl.GL_LINES, None, ('v2i', (x1, y1, x2, y1)))
            batch.add(2, pyglet.gl.GL_LINES, None, ('v2i', (x2, y2, x1, y2)))
            batch.add(2, pyglet.gl.GL_LINES, None, ('v2i', (x2, y2, x2, y1)))

    batch.draw()

(x1,y1) 是方形的左下角坐标,(x2,y2) 是右上角坐标。

1 个回答

1

在OpenGL中,你可以通过调用以下命令来避免填充多边形:

glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);

如果你想再次填充多边形,可以使用:

glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);

这样的话,你可以使用四边形或者两个三角形。使用这个(glPolygonMode)和顶点数组应该能大大提高性能。

撰写回答