python 如何在ModernGL中从(headless)上下文获取渲染数据

nbnkbykc  于 2023-01-19  发布在  Python
关注(0)|答案(1)|浏览(119)

使用创建无头上下文后

ctx = create_context(standalone=True)
ctx.viewport = (0, 0, 500, 500)

并创建一个顶点数组,我希望得到vao.render()的图像数据,有什么办法可以做到吗?
编辑:实际上,我甚至不知道如何在不截图的情况下获得正常上下文的图像数据。有没有办法实现这个问题的任何一个版本?

ar7v8xwq

ar7v8xwq1#

Headless在moderngl中没有提供默认的帧缓冲区,你需要自己做一个。

ctx = create_context(standalone=True)
# 100x100 RGBA8 texture attached to a framebuffer
fbo = ctx.framebuffer(
    color_attachments=[ctx.texture(size=(100, 100), components=4)],
)
fbo.use()
# Fake some rendering (clear with red)
fbo.clear(1.0, 0.0, 0.0, 1.0)
# Byte data of the framebuffer we can for example
# dump into a Pillow image and show/save
data = fbo.read(components=4, dtype="f1")

相关问题