GLFW VSync не работает

glfwSwapInterval(1) похоже, не работает на меня. Если я заставляю VSync в CCC или setVerticalSyncEnabled(true) в SFML мой fps падает до 60, но GLFW просто продолжает работать на 9000 fps. Я делаю это неправильно или GLFW прослушивается?

2 ответов


Ну, похоже, GLFW не хочет включать VSync, когда композиция рабочего стола включена. Если вы хотите VSync в любом случае, это будет работать на Windows:

#ifdef _WIN32
    // Turn on vertical screen sync under Windows.
    // (I.e. it uses the WGL_EXT_swap_control extension)
    typedef BOOL (WINAPI *PFNWGLSWAPINTERVALEXTPROC)(int interval);
    PFNWGLSWAPINTERVALEXTPROC wglSwapIntervalEXT = NULL;
    wglSwapIntervalEXT = (PFNWGLSWAPINTERVALEXTPROC)wglGetProcAddress("wglSwapIntervalEXT");
    if(wglSwapIntervalEXT)
        wglSwapIntervalEXT(1);
#endif

для других ОС google поможет вам.


перестроить GLFW3 с параметром GLFW_USE_DWM_SWAP_INTERVAL.

посмотреть glfw/src/config.h

документы GLFW предупреждают о проблемах с дрожанием, но я сам их не вижу.