如何使用适当的抗锯齿绘制圆圈?

How to draw circles with proper anti-aliasing?

按照 pyglet's official documentation about shapes 的第一个代码片段中给出的示例,我清楚地看到了圆圈的锯齿状边缘,至少在我的系统上显然没有以任何成功的方式消除锯齿。这是我的代码和屏幕截图:

import pyglet
from pyglet import shapes

window = pyglet.window.Window(fullscreen=True)
batch = pyglet.graphics.Batch()

circle = shapes.Circle(700, 150, 100, color=(50, 225, 30), batch=batch)

@window.event
def on_draw():
    window.clear()
    batch.draw()

pyglet.app.run()

所以我想知道是不是pyglet不直接迎合弧、圆、线的抗锯齿

而且,您将如何使用 pyglet 获得平滑的 circle/arc 边缘和平滑的线条 ― 您会推荐一个特定的中间 (python) 库来绘制平滑边缘的形状吗?你会从 pyglet's own OpenGL bindings 调用 OpenGL 来顺利完成吗?

十多年前的相关讨论: Pyglet OpenGL drawing anti-aliasing

您必须创建一个 OpenGL window,并为多重采样配置帧缓冲区(参见 Creating an OpenGL context ans Specifying the OpenGL context properties):

import pyglet

config = pyglet.gl.Config()
config.sample_buffers = 1
config.samples = 4

indow = pyglet.window.Window(config=config)