我正在尝试通过以下方式更改我的应用程序窗口的大小:
mysurface = SDL_SetVideoMode(width, height, 32, SDL_OPENGL);
虽然我正在使用 vsync 交换缓冲区(在驱动程序 xorg-video-ati 中),但当窗口大小发生变化时,我可以看到闪烁(我猜是一个或多个黑框):
void Video::draw()
{
if (videoChanged){
mysurface = SDL_SetVideoMode(width, height, 32, SDL_OPENGL);
scene->init(); //Update glFrustum & glViewPort
}
scene->draw();
SDL_GL_SwapBuffers();
}
所以请有人知道,如果...
SDL_SetVideoMode 没有像 SDL_GL_SwapBuffers() 那样垂直同步?
还是它破坏了窗口并创建了另一个窗口,同时缓冲区是黑色的?
有人知道这样做的工作代码吗?也许在freeglut?