我刚刚开始测试SDL图书馆。我注意到,当我设置 SDL_WINDOW_OPENGL
标志时,SDL_CreateWindow()
非常慢(大约需要 10 倍的时间)。我只讨论窗口创建,而不是 OpenGl 上下文的创建。
基本上,这条线在我的机器上大约需要 55 毫秒:
SDL_CreateWindow(title.c_str(), SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, width, height, SDL_WINDOW_SHOWN);
这大约需要 500 毫秒:
SDL_CreateWindow(title.c_str(), SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, width, height, SDL_WINDOW_OPENGL);
而且我觉得今天速度快多了。昨天我感觉没有花费大约2秒的时间来显示窗口(虽然我没有测量它)
需要这么长时间这是正常的还是我错过了什么?我也是 OpenGL 新手,所以我什至无法猜测它在幕后的作用。
最佳答案
需要很长时间的是从显卡供应商处加载 OpenGL 驱动程序。
我遇到了类似的问题,因此我用符号重建了 SDL 并对其进行了分析。几乎所有时间都花在 ChoosePixelFormat 函数上,该函数是 wgl(Windows 特定的 opengl 接口(interface))的一部分。对我来说,今天,使用 Nvidia 卡,需要整整一秒钟才能完成此初始化。
这里有一个很好的线程,更详细地描述了这些问题:
关于c++ - 使用 SDL_WINDOW_OPENGL 标志创建窗口速度较慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42776455/