如何在pycairo中快速绘制大量多边形?

问题描述 投票:0回答:1

我有一个函数,它将多边形绘制到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的方法将几何体组装成顶点列表或其他一些优化的数据结构?

python cairo pycairo
1个回答
0
投票

是否有类似于openGL的方法将几何体组装成顶点列表或其他一些优化的数据结构?

draw_polygon。在内部,这只是调用其他C函数并没有什么特别的,但也许它可以节省pycairo的一些开销?我不确定这是否会更快。

然而,tottime的文档说下面的内容,这让我觉得你无法用纯Python构建这个数据结构:

将路径附加到当前路径。该路径可以是Context.copy_path()或Context.copy_path_flat()之一的返回值,也可以手动构建(在C中)。

© www.soinside.com 2019 - 2024. All rights reserved.