2024-04-27 23:35:23 发布
网友
我目前正在开发一个用pygame编写的游戏引擎,我想添加OpenGL支持。在
我写了一个测试,看看如何让pygame和OpenGL协同工作,当它在窗口模式下运行时,它的运行速度在150到200 fps之间。当我全屏运行它时(我所做的只是在设置窗口时添加了全屏标志),它会降到60 fps。我经常看到它在60帧的时候运行了很多功能,但是如果它的性能下降很多的话。在
我需要做些什么来告诉OpenGL它正在全屏运行还是这是OpenGL的一个限制?在
(我运行的是Windows XP)
如果你不改变时钟滴答声()当您在全屏模式和窗口模式之间切换时,几乎可以肯定这是一个vsync问题。如果你在液晶显示器上,那么它是100%确定的。在
不幸的是,v-sync可以在很多地方处理,包括SDL、Pyopengl、显示服务器和视频驱动程序。如果你使用Windows,你可以调整NVIDIA控制面板中的VSyc切换,测试,也有可能比英伟达的设置更适合Linux。我猜其他制造商的司机也有类似的设置,但那只是猜测。在
正如frou指出的,这可能是由于Pygame在通过调用display.flip()更新屏幕时等待垂直回溯。如Pygame ^{} documentation所述,如果使用HWSURFACE或DOUBLEBUF标志设置显示模式,display.flip()将在交换缓冲区之前等待垂直回溯。在
display.flip()
HWSURFACE
DOUBLEBUF
老实说,我不认为有任何好的理由(除了基准测试)尝试达到比屏幕刷新率更快的帧速率。你(和玩游戏的人)不会注意到速度或性能上的任何差异,因为显示器只能以60 fps的速度显示。另外,如果不同步垂直回溯,很有可能得到screen tearing。在
这是一个V-Sync问题吗?配置或您的环境可能会将最大帧速率限制为监视器的刷新率。在
如果你不改变时钟滴答声()当您在全屏模式和窗口模式之间切换时,几乎可以肯定这是一个vsync问题。如果你在液晶显示器上,那么它是100%确定的。在
不幸的是,v-sync可以在很多地方处理,包括SDL、Pyopengl、显示服务器和视频驱动程序。如果你使用Windows,你可以调整NVIDIA控制面板中的VSyc切换,测试,也有可能比英伟达的设置更适合Linux。我猜其他制造商的司机也有类似的设置,但那只是猜测。在
正如frou指出的,这可能是由于Pygame在通过调用} documentation 所述,如果使用
display.flip()
更新屏幕时等待垂直回溯。如Pygame ^{HWSURFACE
或DOUBLEBUF
标志设置显示模式,display.flip()
将在交换缓冲区之前等待垂直回溯。在老实说,我不认为有任何好的理由(除了基准测试)尝试达到比屏幕刷新率更快的帧速率。你(和玩游戏的人)不会注意到速度或性能上的任何差异,因为显示器只能以60 fps的速度显示。另外,如果不同步垂直回溯,很有可能得到screen tearing。在
这是一个V-Sync问题吗?配置或您的环境可能会将最大帧速率限制为监视器的刷新率。在
相关问题 更多 >
编程相关推荐