Ubuntu 14.04使用SDL2和vsync切换窗口焦点时的延迟

Ubuntu 14.04使用SDL2和vsync切换窗口焦点时的延迟,ubuntu,sdl-2,vsync,Ubuntu,Sdl 2,Vsync,我正在学习SDL2的基础知识,当我运行我的程序(vsync,windowed)时,在窗口和拖动窗口之间切换焦点会有延迟。这适用于所有窗口,而不仅仅是SDL2应用程序。未启用vsync时,所有窗口都会像预期的那样平稳运行 我运行的是ubuntu 14.04,使用的是nvidia卡,驱动程序版本为349.12。下面是一个在我的机器上重现行为的最小工作示例 #包括 屏幕宽度=640; 屏幕上的常数=480; SDL_窗口*gWindow=NULL; SDL_渲染器*gRenderer=NULL; vo

我正在学习SDL2的基础知识,当我运行我的程序(vsync,windowed)时,在窗口和拖动窗口之间切换焦点会有延迟。这适用于所有窗口,而不仅仅是SDL2应用程序。未启用vsync时,所有窗口都会像预期的那样平稳运行

我运行的是ubuntu 14.04,使用的是nvidia卡,驱动程序版本为349.12。下面是一个在我的机器上重现行为的最小工作示例

#包括
屏幕宽度=640;
屏幕上的常数=480;
SDL_窗口*gWindow=NULL;
SDL_渲染器*gRenderer=NULL;
void init(bool-vsync);
int main(int argc,char*args[]{
init(真);
bool-quit=false;
SDL_事件e;
而(!退出){
while(SDL_PollEvent(&e)!=0){
如果(e.type==SDL\u退出){
退出=真;
}
}
SDL_SetRenderDrawColor(灰色,0xFF,0xFF,0xFF,0xFF);
SDL_RenderClear(gRenderer);
SDL_-Rect fillRect={SCREEN_-WIDTH/4,SCREEN_-HEIGHT/4,SCREEN_-WIDTH/2,SCREEN_-HEIGHT/2};
SDL_SetRenderDrawColor(grender,0xFF,0x00,0x00,0xFF);//RGBA
SDL_RenderFillRect(gRenderer和fillRect);
SDL_RenderPresent(gRenderer);
}
SDL_(格伦德尔);
grender=NULL;
SDL_(格温多);
gWindow=NULL;
SDL_退出();
返回0;
}
void init(bool vsync){
SDL_Init(SDL_Init_视频);
SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY,“1”);
gWindow=SDL_CreateWindow(“SDL测试”,SDL_WINDOWPOS_未定义,SDL_WINDOWPOS_未定义,屏幕宽度,屏幕高度,显示SDL_窗口);
if(vsync){
gRenderer=SDL_CreateRenderer(gWindow,-1,SDL_RENDERER_加速| SDL_RENDERER_PRESENTVSYNC);
}否则{
gRenderer=SDL_CreateRenderer(gWindow,-1,SDL_RENDERER_加速);
}
}
在第二台机器(14.04,bumblebee drivers)上运行此代码,无论是否使用vsync,都会产生平滑的窗口行为。我也尝试过很多有vsync和没有vsync的游戏,唯一复制这种行为的是FTL(我相信是SDL游戏)

如何进一步修复/调试此问题