2014-03-05 45 views
2

我有一个名为正方形的列表中的Square对象的集合。我遍历列表并逐个绘制每个方块,我想知道是否有更快的方法来做到这一点?我不认为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)的左下方点右上角。

+2

您的代码不够快吗? – delnan

+0

如果它不够快,你可能需要另一种语言...我怀疑你可以做出重大改进(但它可能更适合于http://codereview.stackexchange.com) –

+0

不是py用户(没有想法是什么批次,但我怀疑通常没有性能增益的列表......)但尝试VBO或VAO,这基本上是你需要的。还有什么不够快?尝试计算每秒钟的三角形数量并将其与您的gfx卡规范进行比较... – Spektre

回答

1

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

glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); 

若要填充多边形再次使用:

glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); 

这样,您就可以使用四边形或2个三角形。使用这个(glPolygonMode)和顶点数组应该会大大提高性能。