glfwSwapInterval(1)似乎不适合我。如果我在CCC中强制VSync或者在SFML中强制setVerticalSyncEnabled(true),我的fps会下降到60,但GLFW只是保持在9000 fps。我是走错了路,还是GLFW被窃听了?
发布于 2013-04-30 23:42:06
看起来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对于其他的OSs,google会帮助你。
发布于 2013-09-18 07:21:22
使用GLFW_USE_DWM_SWAP_INTERVAL选项重建GLFW3。
请参阅glfw/src/config.h
GLFW文档警告抖动问题,但我自己没有看到这些问题。
发布于 2019-01-02 05:37:09
在窗口和全屏模式之间切换后发现glfwSwapInterval需要重新调用,否则帧率会很大。
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);
}https://stackoverflow.com/questions/16285546
复制相似问题