我使用OpenGl / glfw时出现了一个奇怪的vsync问题:当我启用了vsync时,我的整个桌面感觉很迟钝:我可以移动窗口但是速度很慢,我可以使用浏览器,但一切都感觉很慢。
当我关闭vsync时,我的桌面感觉很好:我可以拖动窗口,移动其他窗口,在我的应用程序运行时使用其他程序,一切正常。
这是在Ubuntu 12.10桌面上,使用默认的Unity。我有一个NVidia GPU并且正在使用它们的专有驱动程序。
以下是我正在使用的示例代码,它非常基本(它甚至不会绘制任何内容):
#include <stdio.h>
#include <GL/glew.h>
#include <GL/glfw.h>
int main() {
glewExperimental = GL_TRUE;
glewInit();
glfwInit();
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3);
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 2);
glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwOpenWindowHint(GLFW_WINDOW_NO_RESIZE, GL_TRUE);
glfwOpenWindow(800, 600, 0, 0, 0, 0 ,0, 0, GLFW_WINDOW);
unsigned int framecounter = 0;
double start = glfwGetTime();
glfwSwapInterval(1); //0 to disable vsync, 1 to enable it
while (glfwGetWindowParam(GLFW_OPENED)) {
glfwSwapBuffers();
framecounter++;
double now = glfwGetTime();
if (now - start > 1) {
float fps = framecounter / (now - start);
printf("FPS: %f\n", fps);
framecounter = 0;
start = glfwGetTime();
}
}
glfwTerminate();
}
编译:
cc `pkg-config --cflags glew gl libglfw` -g -Wall -O3 -std=gnu99 helloworld.c `pkg-config --libs glew gl libglfw` -o helloworld
当glfwSwapInterval
设置为1时,我的桌面感觉迟钝,设置为0然后一切正常。
有没有人知道可能导致此问题的原因,因为我想打开vsync?
答案 0 :(得分:0)
这不是我的代码的问题,而是我的计算机上的vsync问题。我尝试了其他游戏,看看启用vsync是否会导致相同的问题,这也会导致速度减慢。