SDL 重置 glViewport

Posted

技术标签:

【中文标题】SDL 重置 glViewport【英文标题】:SDL resetting glViewport 【发布时间】:2016-05-05 08:22:50 【问题描述】:

我正在测试在使用 SDL2 和 OpenGL 的应用程序中支持多种分辨率。为了创建我的“信箱”功能,我将glViewport 设置为适当的值,一切正常。

但是,如果我创建设置了 SDL_WINDOW_ALLOW_HIGHDPI 标志的窗口,则每当我移动窗口(收到 SDL_WINDOWEVENT_MOVED 事件后)时,SDL 都会将视口修改为窗口的完整大小,这可以通过调用来验证活动期间SDL_GL_GetDrawableSize

如果我在创建窗口时没有设置SDL_WINDOW_ALLOW_HIGHDPI,则不会重置视口。我确实认为这是一个错误,但无法通过 SDL bugzilla 找到任何东西,所以我想问问是否有人看到过类似的行为。

您可能需要使用视网膜 MacBook Pro 才能体验此行为。

【问题讨论】:

看起来像一个错误。最好将其发布到 SDL bugtracker。 【参考方案1】:

只要做你应该做的事:总是在绘制每一帧的开始时重新/设置视口。只要您想实现 HUD,就使用帧缓冲区对象或类似的东西,您必须设置视口(多次)以绘制每一帧。

【讨论】:

以上是关于SDL 重置 glViewport的主要内容,如果未能解决你的问题,请参考以下文章

SDL_GetTicks() 定义缺失。 (SDL 2.0.3)

SDL2.0 用SDL画图

SDL_ttf 找不到“SDL.h”,但 main.cpp 可以

SDL学习

SDL汇总

SDL2 |包装类访问冲突