微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Pygame 中使用 Dirty Rects 更新整个显示,而不仅仅是矩形

如何解决在 Pygame 中使用 Dirty Rects 更新整个显示,而不仅仅是矩形

我是一个相当新的程序员,最近我一直在尝试使用 Dirty Rects 来使我的游戏运行得更快。不幸的是,我遇到了一些问题。无论我如何通过矩形,它都会更新整个屏幕。我尝试将 Rect 参数直接输入到 update() 中,创建一个 pygame.Rect 对象,并在图像上使用 get_rect()(并非全部如下图所示)。

self.screen.fill((255,255,255))
self.screen.blit(self.image,(0,0))
self.screen.blit(self.image,(200,200))
self.update = pygame.Rect((0,1,1))
 
pygame.display.update(self.update)

这里有一些其他方法

pygame.display.update(self.image.get_rect(topleft=(0,0)))
pygame.display.update((0,1))

将发生两件事情之一。如果我将 Rect 设置为宽度和高度为 0,则屏幕上的任何内容都不会更新。否则,无论参数如何,一切都会更新。我在使用操作系统时听说过一些与此相关的问题,但我使用的是 Windows 10 和 Python 3.9,这是粘贴箱上的代码https://pastebin.com/DqEWHZKh 感谢您的帮助!

注意:粘贴的代码只是我用来尝试一些东西的测试程序,而不是我的实际游戏。

编辑:将我的 Pygame 更新到 2.0.1 解决了这个问题,谢谢!

解决方法

这是 PyGame 2.0.0 版中的一个已知错误:

pygame.display.update(Rect) updates the whole screen on Windows due to SDL2 UpdateWindowFramebuffer implementation #251

错误已解决。您必须更新到 PyGame 2.0.1 版

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。