c++ - SDL + OpenGL 的高 CPU 使用率

标签 c++ opengl sdl cpu-usage sdl-opengl

我有一个现代 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/

相关文章:

c++ - 在 Chaiscript 中绑定(bind) C++ native 方法时的继承问题

c++ - OpenGL 渲染(仅实时)?

opengl - GLUT死了吗?

c - 以椭圆路径旋转地球 :OpenGL

c++ - 如何使用代码块编译 64 位 SDL 代码(没有管理员权限)

c++ - 带有 TTF 的 SDL 内存泄漏

c++ - 如何使用 GCC 配置 Mono Include Directory 路径

c++ - 在 Qt 中创建目录的哈希值

java - 快速准确的稀疏 svd 库?

opengl - 如何获得硬边 - OpenGL