我刚刚开始测试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);
这大约需要500毫秒:
SDL_CreateWindow(title.c_str(), SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, width, height, SDL_WINDOW_OPENGL);
而且我觉得今天要快得多。昨天我不觉得显示窗口要花2秒钟的时间(尽管我没有测量)
这是需要很长时间的正常现象,还是我缺少某些东西?我也是OpenGL的新手,所以我什至无法猜到它在做什么。
花费很长时间的事情是从图形卡供应商处加载OpenGL驱动程序。
我有一个类似的问题,所以我用符号重建了SDL并对其进行了概要分析。几乎所有时间都花在ChoosePixelFormat函数上,该函数是Windows特定的opengl接口wgl的一部分。对我而言,今天,使用Nvidia卡进行初始化需要一整秒钟。
这里有一个不错的线程,它更详细地描述了问题: