首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >glfwSwapInterval(%1)无法启用vsync?

glfwSwapInterval(%1)无法启用vsync?
EN

Stack Overflow用户
提问于 2013-04-30 02:18:42
回答 4查看 13.2K关注 0票数 12

glfwSwapInterval(1)似乎不适合我。如果我在CCC中强制VSync或者在SFML中强制setVerticalSyncEnabled(true),我的fps会下降到60,但GLFW只是保持在9000 fps。我是走错了路,还是GLFW被窃听了?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-04-30 23:42:06

看起来GLFW不想在启用桌面合成的情况下打开VSync。如果你仍然想要VSync,这将在Windows上工作:

代码语言:javascript
复制
#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

对于其他的OSs,google会帮助你。

票数 8
EN

Stack Overflow用户

发布于 2013-09-18 07:21:22

使用GLFW_USE_DWM_SWAP_INTERVAL选项重建GLFW3。

请参阅glfw/src/config.h

GLFW文档警告抖动问题,但我自己没有看到这些问题。

票数 3
EN

Stack Overflow用户

发布于 2019-01-02 05:37:09

在窗口和全屏模式之间切换后发现glfwSwapInterval需要重新调用,否则帧率会很大。

代码语言:javascript
复制
if (fullScreen)
            {
                glfwSetWindowMonitor(window, monitor, 0, 0, monitorMode->width, monitorMode->height, monitorMode->refreshRate);

                // Added to fix framerate to vertical refresh //
                glfwSwapInterval(1);
            }
            else
            {
                glfwSetWindowMonitor(window, NULL, 0, 0, monitorMode->width, monitorMode->height, monitorMode->refreshRate);
            }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16285546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档