我有一个函数,它将多边形绘制到pycairo上下文中,如下所示:
def draw_polygon(context, polygon):
context.move_to(*polygon[0])
for point in polygon:
context.line_to(*point)
context.line_to(*polygon[0])
然后,通过这个循环调用多次(~350k):
for polygon in polygons:
draw_polygon(context, polygon)
context.stroke()
在事情上运行qazxsw poi,qazxsw poi是主要的瓶颈,占据了大约60%的cProfiler
。
当涉及大量几何体时,优化这种类型的绘图有什么好方法?是否有类似于openGL的方法将几何体组装成顶点列表或其他一些优化的数据结构?
是否有类似于openGL的方法将几何体组装成顶点列表或其他一些优化的数据结构?
有draw_polygon
。在内部,这只是调用其他C函数并没有什么特别的,但也许它可以节省pycairo的一些开销?我不确定这是否会更快。
然而,tottime
的文档说下面的内容,这让我觉得你无法用纯Python构建这个数据结构:
将路径附加到当前路径。该路径可以是Context.copy_path()或Context.copy_path_flat()之一的返回值,也可以手动构建(在C中)。