PyOpenGL+Pygame全屏最高每秒60帧

2024-04-27 23:35:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在开发一个用pygame编写的游戏引擎,我想添加OpenGL支持。在

我写了一个测试,看看如何让pygame和OpenGL协同工作,当它在窗口模式下运行时,它的运行速度在150到200 fps之间。当我全屏运行它时(我所做的只是在设置窗口时添加了全屏标志),它会降到60 fps。我经常看到它在60帧的时候运行了很多功能,但是如果它的性能下降很多的话。在

我需要做些什么来告诉OpenGL它正在全屏运行还是这是OpenGL的一个限制?在

(我运行的是Windows XP)


Tags: 引擎功能游戏标志windows模式协同工作性能
3条回答

如果你不改变时钟滴答声()当您在全屏模式和窗口模式之间切换时,几乎可以肯定这是一个vsync问题。如果你在液晶显示器上,那么它是100%确定的。在

不幸的是,v-sync可以在很多地方处理,包括SDL、Pyopengl、显示服务器和视频驱动程序。如果你使用Windows,你可以调整NVIDIA控制面板中的VSyc切换,测试,也有可能比英伟达的设置更适合Linux。我猜其他制造商的司机也有类似的设置,但那只是猜测。在

正如frou指出的,这可能是由于Pygame在通过调用display.flip()更新屏幕时等待垂直回溯。如Pygame ^{} documentation所述,如果使用HWSURFACEDOUBLEBUF标志设置显示模式,display.flip()将在交换缓冲区之前等待垂直回溯。在

老实说,我不认为有任何好的理由(除了基准测试)尝试达到比屏幕刷新率更快的帧速率。你(和玩游戏的人)不会注意到速度或性能上的任何差异,因为显示器只能以60 fps的速度显示。另外,如果不同步垂直回溯,很有可能得到screen tearing。在

这是一个V-Sync问题吗?配置或您的环境可能会将最大帧速率限制为监视器的刷新率。在

相关问题 更多 >