我在一个名为 squares 的列表中有一组 Square 对象。我遍历列表并单独绘制每个方 block ,我想知道是否有更快的方法来做到这一点?我不认为 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) 是右上角。
最佳答案
在 OpenGL 中,您可以通过调用避免多边形填充:
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
要再次获得填充的多边形,请使用:
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
这样,您可以使用四边形或 2 个三角形。使用 this(glPolygonMode) 和顶点数组应该会大大提高性能。
关于python - 绘制大量正方形的最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22205499/