macOS下Pygame全屏模式分辨率异常问题求助
Pygame macOS全屏分辨率异常解决方案
我使用Pygame调用pygame.display.set_mode((0, 0), pygame.FULLSCREEN)创建全屏窗口时,遇到了分辨率异常问题:显示器原生分辨率为2560×1600,但窗口实际以1440×900全屏显示,画质明显下降。
根据Pygame官方文档,该问题由显示环境的自动拉伸功能导致,Windows平台可通过示例代码禁用该功能,但我需要macOS下的解决方法。
macOS下的解决步骤
1. 启用高DPI支持(Pygame 2.0+推荐)
Pygame 2.0及以上版本原生支持macOS高DPI模式,初始化前需先开启相关配置:
import os # 启用系统级高DPI支持 os.environ['SDL_VIDEO_HIGHDPI_DISABLED'] = '0' import pygame pygame.init()
2. 获取原生分辨率并创建全屏窗口
直接获取显示器的原生分辨率,以此创建窗口,避免系统自动拉伸:
# 获取当前显示器的真实分辨率 display_info = pygame.display.Info() true_resolution = (display_info.current_w, display_info.current_h) # 创建对应分辨率的全屏窗口 screen = pygame.display.set_mode(true_resolution, pygame.FULLSCREEN)
3. 旧版Pygame兼容方案(Pygame 1.x)
如果使用Pygame 1.x版本,可通过获取系统支持的最高分辨率来创建窗口:
import pygame pygame.init() # 获取系统支持的最高分辨率列表,取第一个即最高分辨率 highest_supported_res = pygame.display.list_modes()[0] screen = pygame.display.set_mode(highest_supported_res, pygame.FULLSCREEN)
验证是否生效
运行代码后,可通过以下代码打印当前窗口分辨率,确认是否与显示器原生分辨率一致:
print(f"当前窗口分辨率: {screen.get_size()}")
内容的提问来源于stack exchange,提问作者Armaho
相关产品推荐
相关产品推荐

