Mac OS 上的 pyglet 模板测试
pyglet stencil test on Mac OS
我正在尝试使用模板测试来剪辑和创建二维内容的边框,但它似乎不起作用。这可能是一个平台问题,我是 运行 带有 MacOS 12.0.1
的 M1 MacBook Air 上的代码
根据下面的代码,我希望有一个带有 50px 红色边框的蓝色方块,但我只得到一个大红色方块。
from pyglet import window, gl, shapes, app
win = window.Window(width=800, height=600)
@win.event
def on_draw():
win.clear()
gl.glEnable(gl.GL_STENCIL_TEST)
gl.glStencilMask(gl.GL_TRUE)
gl.glClearStencil(0)
gl.glClear(gl.GL_STENCIL_BUFFER_BIT)
gl.glStencilFunc(gl.GL_NEVER, 1, 0xFF)
gl.glStencilOp(gl.GL_REPLACE, gl.GL_KEEP, gl.GL_KEEP)
square = shapes.Rectangle(x=200, y=200, width=200, height=200, color=(0, 0, 255))
square.draw()
gl.glStencilMask(gl.GL_FALSE)
gl.glStencilFunc(gl.GL_NOTEQUAL, 1, 0xFF)
square2 = shapes.Rectangle(x=150, y=150, width=300, height=300, color=(255, 0, 0))
square2.draw()
gl.glDisable(gl.GL_STENCIL_TEST)
app.run()
window 没有模板缓冲区。不能保证 window 的默认帧缓冲区在默认情况下会有模板缓冲区。显式指定模板缓冲区位(参见 pyglet, Context configuration):
config = gl.Config(double_buffer=True, stencil_size=8)
win = window.Window(width=800, height=600, config=config)
我正在尝试使用模板测试来剪辑和创建二维内容的边框,但它似乎不起作用。这可能是一个平台问题,我是 运行 带有 MacOS 12.0.1
的 M1 MacBook Air 上的代码根据下面的代码,我希望有一个带有 50px 红色边框的蓝色方块,但我只得到一个大红色方块。
from pyglet import window, gl, shapes, app
win = window.Window(width=800, height=600)
@win.event
def on_draw():
win.clear()
gl.glEnable(gl.GL_STENCIL_TEST)
gl.glStencilMask(gl.GL_TRUE)
gl.glClearStencil(0)
gl.glClear(gl.GL_STENCIL_BUFFER_BIT)
gl.glStencilFunc(gl.GL_NEVER, 1, 0xFF)
gl.glStencilOp(gl.GL_REPLACE, gl.GL_KEEP, gl.GL_KEEP)
square = shapes.Rectangle(x=200, y=200, width=200, height=200, color=(0, 0, 255))
square.draw()
gl.glStencilMask(gl.GL_FALSE)
gl.glStencilFunc(gl.GL_NOTEQUAL, 1, 0xFF)
square2 = shapes.Rectangle(x=150, y=150, width=300, height=300, color=(255, 0, 0))
square2.draw()
gl.glDisable(gl.GL_STENCIL_TEST)
app.run()
window 没有模板缓冲区。不能保证 window 的默认帧缓冲区在默认情况下会有模板缓冲区。显式指定模板缓冲区位(参见 pyglet, Context configuration):
config = gl.Config(double_buffer=True, stencil_size=8)
win = window.Window(width=800, height=600, config=config)