我在 MacOS 上尝试为我的游戏 Bitfighter 进行高 DPI 渲染,结果总是看起来很糟糕,就像低分辨率游戏的放大版本。
游戏使用 SDL2 + OpenGL,我已正确启用
SDL_WINDOW_ALLOW_HIGHDPI
窗口标志,并在 Info.plist 中使其支持 HighDPI。 这一切都有效,我得到了更高分辨率的标题栏。 我使用 SDL_GL_GetDrawableSize
并且它正确返回比窗口大小大 2 倍的像素大小,但是以下重新缩放它的技术不会产生良好的结果:
glViewport
使用窗口坐标glViewport
和可绘制坐标,然后使用 glOrtho
进行缩放(如 SDL 文档 README-ios.md
中的建议)两者都显示像素矢量图形。 我该怎么做才能让 OpenGL 在 MacOS 高 DPI 下更好地绘制?
谢谢。
我在这个主题上遇到了渲染问题。请参阅屏幕截图https://discourse.libsdl.org/t/sdl-gl-getdrawablesize-on-a-retina-mac-rendering-issue/27069
这篇文章的解决方案:
如果您自己使用 OpenGL,请确保将视口设置为与窗口的实际像素尺寸相匹配。因此,请使用从 SDL_GL_GetDrawableSize() 获得的内容。
因此,在
CreateWindow()
指定窗口的预期宽度和高度并 SDL_GL_CreateContext()
在视口中设置“真实”大小之后:
int drawableWidth, drawableHeight;
SDL_GL_GetDrawableSize(screen, &drawableWidth, &drawableHeight);
glViewport(0, 0, drawableWidth, drawableHeight);
我不断将窗口宽度和高度传递给
glOrtho()
,而不是可绘制尺寸。