glfwSwapInterval(1)似乎对我不起作用。如果我在CCC中强制使用VSync或在SFML中强制使用setVerticalSyncEnabled(true),则我的fps下降到60,但是GLFW只是保持9000 fps的速度运行。我会以错误的方式进行操作还是GLFW被窃听了?

最佳答案

好吧,当启用桌面合成时,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

对于其他操作系统,谷歌将为您提供帮助。

09-25 17:41