绘制大量正方形的最快方法?
我有一个叫做 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)和顶点数组应该能大大提高性能。