python - 在 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, 0, 1, 1))
pygame.display.update(self.update)
以下是其他一些方法:
pygame.display.update(self.image.get_rect(topleft=(0, 0)))
pygame.display.update((0, 0, 1, 1))
会发生两件事之一。如果我将 Rect 的宽度和高度设置为 0,那么屏幕上的任何内容都不会更新。否则,无论参数如何,一切都会更新。我在使用操作系统时听说过一些与此相关的问题,但我使用的是 Windows 10 和 Python 3.9,这是 pastebin 上的代码:https ://pastebin.com/DqEWHZKh感谢您的帮助!
注意:粘贴的代码只是我为尝试一些东西而制作的测试程序,而不是我的实际游戏。
编辑:将我的 Pygame 更新到 2.0.1 可以解决这个问题,谢谢!
解决方案
这是 PyGame 2.0.0 版中的一个已知错误:
由于 SDL2 UpdateWindowFramebuffer implementation #251 pygame.display.update(Rect) 在 Windows 上更新整个屏幕。
该错误已得到解决。您必须更新到 PyGame 版本 2.0.1
推荐阅读
- node.js - 有没有办法等到所有数据都写入 selenium (nodejs) 中的 csv 文件后再退出测试?
- javascript - Vue.js 与服务 POST 请求不兼容吗?
- c - 尝试传递节点时出现分段错误
- pyspark - 在 pyspark 中,是否可以使用 1 个 groupBy 进行 2 个聚合?
- python - 有什么方法可以通过本地代码写入浏览器 cookie?
- python - 将附件添加到 EmailMessage 会引发 TypeError:set_text_content() 获得了意外的关键字参数“maintype”
- dns - Route53 不包括粘合记录
- android - 访问另一个活动的方法
- node.js - 用 nodejs 编写的 AWS Lambda 函数没有更新我的 DynamoDB
- c++ - 如何在 qt 中通过 ODBC 驱动程序连接到 oracle 12c?