SDL自动放大图像,如何避免受Windows系统150%显示缩放影响?
解决SDL跟随Windows系统缩放放大画面的问题
要让SDL忽略Windows系统的显示缩放,按实际像素渲染60×60的图片,可通过以下步骤实现:
设置DPI感知提示:在初始化SDL或创建窗口前,添加以下代码,让SDL启用每显示器DPI感知模式,避免系统自动缩放窗口:
SDL_SetHint(SDL_HINT_WINDOWS_DPI_AWARENESS, "per-monitor-v2");该模式下,SDL会根据当前显示器的DPI调整窗口渲染逻辑,确保窗口的逻辑尺寸与实际像素尺寸一致,系统不会对整个窗口进行缩放。
验证渲染尺寸:创建窗口和渲染器后,可通过
SDL_GetWindowSize获取窗口的逻辑尺寸,通过SDL_GetRendererOutputSize获取实际渲染的像素尺寸。若DPI感知设置正确,两者数值应匹配(比如设置窗口尺寸为60×60时,实际渲染尺寸也为60×60)。按原始尺寸渲染:渲染图片时,直接使用原始60×60的
SDL_Rect参数调用SDL_RenderCopy,无需额外缩放,即可让图片按实际像素显示。
如果你的SDL版本低于2.0.10(不支持per-monitor-v2),也可以尝试设置为不感知DPI模式(但可能导致高DPI下文字模糊):
SDL_SetHint(SDL_HINT_WINDOWS_DPI_AWARENESS, "unaware");
内容的提问来源于stack exchange,提问作者Max Legato
相关产品推荐
相关产品推荐

