使用 SDL_WINDOW_OPENGL 标志缓慢创建窗口

Paw*_*sos 5 c++ opengl sdl

我刚刚开始测试SDL库。我注意到SDL_CreateWindow()设置SDL_WINDOW_OPENGL标志时非常慢(需要大约 10 倍的时间)。我只是在谈论窗口的创建,而不是 OpenGL 上下文的创建。

基本上这条线在我的机器上大约需要 55 毫秒:

SDL_CreateWindow(title.c_str(), SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, width, height, SDL_WINDOW_SHOWN);
Run Code Online (Sandbox Code Playgroud)

这大约需要 500 毫秒:

SDL_CreateWindow(title.c_str(), SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, width, height, SDL_WINDOW_OPENGL);
Run Code Online (Sandbox Code Playgroud)

我觉得今天要快得多。昨天我觉得显示窗口大约需要 2 秒(虽然我没有测量它)

花这么长时间是正常的还是我错过了什么?我也是 OpenGL 的新手,所以我什至无法猜测它在幕后做了什么。

man*_*ged 4

需要很长时间的是从显卡供应商处加载 OpenGL 驱动程序。

我遇到了类似的问题,因此我用符号重建了 SDL 并对其进行了分析。几乎所有时间都花在 ChoosePixelFormat 函数上,该函数是 wgl(Windows 特定的 opengl 接口)的一部分。对我来说,今天,使用 Nvidia 卡,需要整整一秒钟才能完成此初始化。

这里有一个很好的线程更详细地描述了这些问题:

https://hero.handmade.network/forums/code-discussion/t/2503-%5Bday_235%5D_opengls_pixel_format_takes_a_long_time