我刚刚开始测试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接口(interface)wgl的一部分。对我来说,今天,使用Nvidia卡进行初始化需要一整秒的时间。
这里有一个不错的线程,它更详细地描述了这些问题:
https://hero.handmade.network/forums/code-discussion/t/2503-%5Bday_235%5D_opengls_pixel_format_takes_a_long_time
关于c++ - 使用SDL_WINDOW_OPENGL标志创建窗口的速度很慢,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42776455/