glfwSwapInterval(1)无法启用vsync?

mwe*_*chy 10 c++ windows opengl glfw

glfwSwapInterval(1)似乎不适合我.如果我在CCC或setVerticalSyncEnabled(true)SFML中强制VSync,我的fps下降到60,但GLFW只是以9000 fps运行.我是以错误的方式解决这个问题还是GLFW被窃听?

mwe*_*chy 7

看起来像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
Run Code Online (Sandbox Code Playgroud)

对于其他操作系统谷歌将帮助您.

  • 此修复程序在我的Intel HD 4600上不起作用,因为proc地址为0.但是配置GLFW3以使用GLFW_USE_DWM_SWAP_INTERVAL. (2认同)