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

标签 python opengl pyglet

我在一个名为 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/

相关文章:

c++ - opengl中灯光的区别

java - 在opengl中获取最近的聚焦对象

iphone - glTexEnvi (OpenGL ES 1.x) 的任何可理解的描述吗?

python - Pyglet 声音无法加载, ".load"给出 AttributeError 但它在前一天有效

python - 仅在一个模块中修补方法

python - 如何更改 Windows 文件的文件创建日期?

python - 为什么 Dramatiq 在 Docker 容器中启动失败?

python - 第一次后磁盘插入缓存

python-3.x - 在Pyglet(Raspberry Pi 4B,Raspbian)中播放音频时听不到声音

python - 循环播放音乐,直到释放一个键。 Python