使用SDL_WINDOW_OPENGL标志创建慢窗口

时间:2017-03-14 01:49:45

标签: 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);

这需要大约500毫秒:

SDL_CreateWindow(title.c_str(), SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, width, height, SDL_WINDOW_OPENGL);

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

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

1 个答案:

答案 0 :(得分:1)

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

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

这里有一个不错的线程,它更详细地描述了问题:

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