[英]How can I draw a list to the screen in pygame?
我正在编写一个程序来计算 OpenGL 着色器中的一些像素内容。 通过该计算,我得到一个列表,其中包含需要写入屏幕的每个像素。 有没有一种方法可以一次绘制所有这些数据,而不是遍历列表并绘制每个像素? 我问这个是因为遍历包含我屏幕上所有百万像素的列表并将这些像素单独写入屏幕会非常慢。 任何帮助将非常感激。 谢谢。
如果颜色数据在帧缓冲区中,您可以在显示更新之前使用glReadPixels
读取它(在pygame.display.flip()
或pygame.display.update()
之前)。 使用pygame.image.fromstring()
从缓冲区创建新的Surfaces :
size = screen.get_size()
buffer = glReadPixels(0, 0, *size, GL_RGBA, GL_UNSIGNED_BYTE)
pygame.display.flip()
screen_surf = pygame.image.fromstring(buffer, size, "RGBA")
如果数据在纹理中(例如存储在计算着色器中),您可以使用glGetTexImage
读取它:
image_buffer = glGetTexImage(GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_BYTE)
image_surf = pygame.image.fromstring(image_buffer, (width, height), "RGBA")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.