我刚刚开始测试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的新手,所以我甚至无法猜测它在幕后做了些什么。
答案 0 :(得分:1)
需要很长时间的事情是从图形卡供应商处加载OpenGL驱动程序。
我遇到了类似的问题,因此我用符号重建了SDL并对其进行了概要分析。几乎所有时间都花在ChoosePixelFormat函数上,该函数是Windows特定的opengl接口wgl的一部分。对我来说,今天,使用Nvidia卡进行初始化需要一整秒钟。
这里有一个不错的线程,它更详细地描述了问题: