擅长:python、mysql、java
<p>我可以使用<code>glReadPixels(...)</code>获得整个帧缓冲区,然后使用PIL将其写入文件:</p>
<pre><code># 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')
</code></pre>
<p>我对alpha不感兴趣,但我相信你可以很容易地添加进去。</p>
<p>我被迫使用<code>glReadPixels(...)</code>,而不是Pyglet代码</p>
<pre><code>pyglet.image.get_buffer_manager().get_color_buffer().save('jpap.png')
</code></pre>
<p>因为使用<code>save(...)</code>的输出与我在窗口中看到的不同。(多采样缓冲区丢失?)</p>