我正在研究一些涉及使用pygame库来绘制圆形表面的代码.绘制圆圈的代码如下所示:
surf = pygame.Surface((2000,2000))
pygame.draw.circle(surf,
pygame.Color("white"),
(1000,1000),
508,
50)
Run Code Online (Sandbox Code Playgroud)
问题是生成的圆圈有伪影

无论如何在没有得到这些文物的情况下绘制这样的圆圈?
你看到的很可能是pygame.draw.circle实现的问题.很可能pygame开发人员愚蠢地假设您可以通过按顺序绘制几个圆来绘制粗圆,每个圆增加半径.这在实践中不起作用,你会得到像你看到的那样的莫尔条纹.尝试将圆线粗细增加100或200,看看会发生什么.如果它变得更糟,那就是它pygame.draw.circle的错.
解决方案是提供自己的圆形渲染例程.这当然可以做到,但为了获得最佳性能,在C/C++扩展模块中进行pygame或使用OpenGL(带或不带片段着色器)是有意义的.
要为每条扫描线获得一个完美的圆,您必须计算每条扫描线的填充区域的起点和终点.通过使用pygame.draw.line绘制单个扫描线,可以在python中以可承受的性能执行此操作.
| 归档时间: |
|
| 查看次数: |
3263 次 |
| 最近记录: |