我在使用SDL2和OpenGL的应用程序中测试对多分辨率的支持。为了创建我的"letterbox“功能,我将我的glViewport设置为适当的值,一切都会完美地工作。
但是,如果我在创建窗口时设置了SDL_WINDOW_ALLOW_HIGHDPI标志,则每当我移动窗口时(在接收到SDL_WINDOWEVENT_MOVED事件之后),SDL都会将视区修改为窗口的完整大小,这可以通过在事件期间调用SDL_GL_GetDrawableSize来验证。
如果在创建窗口时未设置SDL_WINDOW_ALLOW_HIGHDPI,则不会重置视口。我确实认为这是一个bug,但是通过SDL bugzilla找不到任何东西,所以我想问问是否有人看到过类似的行为。
你可能需要有一个视网膜MacBook专业版来体验这种行为。
发布于 2016-05-06 02:37:39
只要做你应该做的事:总是在绘制每一帧开始时重新设置视口。一旦你想实现一个HUD,使用帧缓冲区对象或类似的东西,你就必须为绘制每个帧设置视口(多次)。
https://stackoverflow.com/questions/37045805
复制相似问题