我有一个现代 CPU (AMD FX 4170) 和一个现代 GPU (NVidia GTX 660)。然而,这个简单的程序设法充分利用了我 CPU 的一个内核。这意味着它使用一个 4.2 GHz 内核以 60 FPS 的速度绘制无。这个程序有什么问题?
#include <SDL/SDL.h>
int main(int argc, char** argv)
{
SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO);
SDL_SetVideoMode(800, 600, 0, SDL_OPENGL | SDL_RESIZABLE);
while(true)
{
Uint32 now = SDL_GetTicks();
SDL_GL_SwapBuffers();
int delay = 1000 / 60 - (SDL_GetTicks() - now);
if(delay > 0) SDL_Delay(delay);
}
return 0;
}
最佳答案
事实证明,NVidia 的驱动程序使用繁忙循环等待 vsync,导致 SDL_GL_SwapBuffers() 使用 100% CPU。从 NVidia 控制面板关闭垂直同步可消除此问题。
关于c++ - SDL + OpenGL 的高 CPU 使用率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17120622/