c++ - glfwSwapInterval(1) 无法启用 vsync?

标签 c++ windows opengl glfw

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

对于其他操作系统,谷歌会帮助你。

关于c++ - glfwSwapInterval(1) 无法启用 vsync?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16285546/

相关文章:

windows - 如何区分空窗口文本和 GetWindowText API 错误?

c++ - 访问嵌套模板参数

python - 如何在cython中使用并行性

node.js - 如何在 Windows 10 上修复错误 : spawn UNKNOWN with node. js v7.8.0?

windows - 在Windows上解析UTF-8命令行参数这一奇怪问题的原因是什么?

java - 使用 glMapBuffer 的优点

opengl - glGetUniformLocation 不可预测的行为

c++ - 尝试实现相机

c++ - 为什么 GDB 对浮点运算的评估与 C++ 不同?

c++ - 这个电话去哪儿了?