使用SDL_WINDOW_OPENGL标志的慢速窗口创建

问题描述 投票:4回答:1

我刚刚开始测试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的新手,所以我什至无法猜到它在做什么。

c++ opengl sdl
1个回答
0
投票

花费很长时间的事情是从图形卡供应商处加载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

© www.soinside.com 2019 - 2024. All rights reserved.