我使用的是windows10和sdl2。必须初始化SDL_INIT_GAMECONTROLLER标志,否则将不会开始执行。下面是main中的一些代码(参见gamecontroller init调用的底部注释):
SDL_Init(SDL_INIT_VIDEO);
int imgFlags = IMG_INIT_PNG;
if(!( IMG_Init(imgFlags) & imgFlags)) {
printf( "SDL_image could not initialize! SDL_image Error: %s\n", IMG_GetError() );
return 0;
}
SDL_ShowCursor(SDL_DISABLE);
SDL_Window* window = NULL;
window = SDL_CreateWindow("Anica", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, W, H,
SDL_WINDOW_SHOWN);
SDL_Renderer* renderer = NULL;
renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
SDL_InitSubSystem(SDL_INIT_AUDIO);
SDL_InitSubSystem(SDL_INIT_EVENTS);
SDL_InitSubSystem(SDL_INIT_TIMER);
// If this sub system is not initted execution stops. If it is initted
// execution works fine. It takes 2-3 seconds for this call to finish which
// is really slow.
SDL_InitSubSystem(SDL_INIT_GAMECONTROLLER);如果游戏控制器子系统被初始化,窗口会打开并挂起,直到游戏控制器初始化调用完成(2-3秒)。那么一切都很好。如果游戏控制器子系统未初始化,窗口将打开并无限期挂起。
我使用的是windows10,如果这有什么不同的话。
我的合作伙伴在Windows10上使用相同的代码时没有这个问题,这让我们两个都感到困惑。
发布于 2019-02-16 04:15:17
从SDL 2.0.9升级到2.0.8为我解决了这个问题。
感谢对这个问题的评论,谢谢你的帮助。
https://stackoverflow.com/questions/54715649
复制相似问题