我有一个使用SDL的OpenGL应用程序,在调整窗口大小时我遇到了奇怪的行为.例如,这是一个1400x900的常规窗口:

如果我将分辨率提高到1600x900,我会得到黑条,屏幕尺寸实际上是相同的:

如果我将分辨率降低到1280x1024,我只能获得图像的一部分:

但是,如果我退出应用程序并手动重新启动它,应用程序将正常运行,并以正确的大小绘制图像.这里的数字仅供参考,无论初始和最终决议如何,问题仍然存在.
void App :: Load()
{
int music = 100, effects = 100;
XMLDoc settings("res/settings.xml");
if(settings.ready())
{
rapidxml::xml_node<char> *node = settings.Doc()->first_node("settings");
if(NodeValid(node))
{
if(NodeValid("screen",node))
gScreenSettings.Load(node->first_node("screen"));
if(NodeValid("volume",node))
{
rapidxml::xml_node<char> *volnode = node->first_node("volume");
LoadNum(music,"music",volnode);
LoadNum(effects,"effects",volnode);
}
gFilePath.Load(node->first_node("paths"));
}
}
//Start the sound subsystem
pyrodactyl::music::gMusicManager.Init(music, effects);
}
bool App :: Init(bool load)
{
//Load all SDL subsystems and the TrueType font subsystem
if( SDL_Init( SDL_INIT_TIMER | SDL_INIT_AUDIO | SDL_INIT_VIDEO | SDL_INIT_JOYSTICK ) == -1 || TTF_Init() == -1)
{
fprintf(stderr,"Couldn't …Run Code Online (Sandbox Code Playgroud)