1. 遇到的问题
在使用glfw时,需要显示FPS等性能数据时,渲染后帧率一直保持在60fps,即使渲染一个简单的正方形,其帧率仍保持在60fps左右
2. 解决方法
在google后发现是垂直同步(V-Sync) 的问题,垂直同步的作用是让显卡的运算和显示器刷新率一致以稳定输出的画面质量,就是说显示器能够支持的刷新率是多少,显卡运算的帧率也就多少,因此为了解决帧率固定的问题,需要disable这个垂直同步的功能。
如果在Windows系统下,需要使用wglSwapIntervalExt
函数,而该函数定义在头文件wglext.h
中,该文件的下载在这,在wglext.h
文件中声明了Windows所有的特有扩展的入口点。
wglSwapIntervalEXT
来自于WGL_EXT_swap_control
扩展。它允许在每次缓冲交换之前指定最小帧数。通常这用于垂直同步,该扩展的具体信息可以去其文档中查看。在使用该函数之前,我们需要测试我们的显卡是否支持WGL_EXT_swap_control
,并且使用wglGetProcAddress
函数获取指向上述函数的指针。
- 首先测试我们的显卡是否支持
WGL_EXT_swap_control
,代码如下: