Я смог получить весь буфер кадра, используя glReadPixels(...)
, затем использовал PIL для записи в файл:
# Capture image from the OpenGL buffer
buffer = ( GLubyte * (3*window.width*window.height) )(0)
glReadPixels(0, 0, window.width, window.height, GL_RGB, GL_UNSIGNED_BYTE, buffer)
# Use PIL to convert raw RGB buffer and flip the right way up
image = Image.fromstring(mode="RGB", size=(window.width, window.height), data=buffer)
image = image.transpose(Image.FLIP_TOP_BOTTOM)
# Save image to disk
image.save('jpap.png')
Меня не интересовала альфа, но я уверен, что вы могли бы легко добавить ее.
Я был вынужден использовать glReadPixels(...)
вместо кода Пиглета
pyglet.image.get_buffer_manager().get_color_buffer().save('jpap.png')
потому что вывод с использованием save(...)
не был идентичен тому, что я видел в Окне. (Буферы мультисэмплинга пропущены?)