我正在编写一些涉及使用 pygame 库在曲面上绘制圆的代码。绘制圆圈的代码如下所示:
surf = pygame.Surface((2000,2000))
pygame.draw.circle(surf,
pygame.Color("white"),
(1000,1000),
508,
50)
问题是生成的圆有伪影
有没有办法在没有这些工件的情况下像这样画一个圆圈?
最佳答案
您看到的很可能是 pygame.draw.circle 实现的问题。 pygame 开发人员很可能愚蠢地认为您可以通过依次绘制多个圆来绘制粗圆,每个圆的半径增加 1。这在实践中是行不通的,你会得到像你看到的那样的波纹图案。尝试将圆线粗细增加 100 或 200,看看会发生什么。如果情况变得更糟,那就是 pygame.draw.circle
的错。
一种解决方案是提供您自己的圆形渲染例程。这当然可以完成,但为了获得最佳性能,在 pygame 的 C/C++ 扩展模块中执行此操作或使用 OpenGL(有或没有片段着色器)是有意义的。
要为每条扫描线获得完美的圆,您必须计算每条扫描线的填充区域的起点和终点。通过使用 pygame.draw.line 绘制单独的扫描线,可以在 python 中以可容忍的性能执行此操作。
关于python - 使用 pygame 绘制图元时出现工件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10148479/