【发布时间】:2013-10-10 19:22:08
【问题描述】:
我正在尝试通过以下方式更改应用程序窗口的大小:
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 中?
【问题讨论】:
标签: opengl sdl flicker double-buffering vsync