C++ 在gDebugger中运行我的程序时出现奇怪的结果

C++ 在gDebugger中运行我的程序时出现奇怪的结果,c++,debugging,opengl,graphics,C++,Debugging,Opengl,Graphics,我试图通过gDEBugger()运行一个OpenGL程序,我看到了一些奇怪的事情: 使用gDEBugger,帧的渲染速度似乎要快得多。例如,如果我每一帧更新某个对象的位置,它会在屏幕上快速移动,但是当程序在没有gDEBugger的情况下运行时,它的移动速度会慢得多 奇怪的是,格德布格报告8GL帧/秒。这似乎不现实:很明显,FPS高于8(顺便说一句,我在“调试设置”对话框中检查了所有可能的OpenGL渲染帧终止符)。以下是一个屏幕截图(单击可获得完整分辨率): 我的程序使用SDL创建OpenGL

我试图通过gDEBugger()运行一个OpenGL程序,我看到了一些奇怪的事情:

  • 使用gDEBugger,帧的渲染速度似乎要快得多。例如,如果我每一帧更新某个对象的位置,它会在屏幕上快速移动,但是当程序在没有gDEBugger的情况下运行时,它的移动速度会慢得多

  • 奇怪的是,格德布格报告8GL帧/秒。这似乎不现实:很明显,FPS高于8(顺便说一句,我在“调试设置”对话框中检查了所有可能的OpenGL渲染帧终止符)。以下是一个屏幕截图(单击可获得完整分辨率):

  • 我的程序使用SDL创建OpenGL渲染上下文:

    Uint32 flags = SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_OPENGL;
    if(fullscreen) flags |= SDL_FULLSCREEN;
    
    // Initialize SDL's video subsystem
    SDL_Init(SDL_INIT_VIDEO) == -1;
    
    // Attempt to set the video mode
    SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 );
    SDL_Surface* s = SDL_SetVideoMode(width, height, 0, flags);
    
    我使用的是Windows7和NVidia图形卡(geforce gtx 660m)

    我的问题是,如何解释我在1)和2)中看到的奇怪行为?是否由于某种原因,渲染是在软件中而不是在图形卡中执行的


    UPD:显然,我在每个帧的末尾调用了
    SDL\u GL\u SwapBuffers
    (它没有被列为渲染帧终止符之一),但我认为它应该只调用windows SwapBuffers函数。

    关于问题1:显然gDebugger禁用了wait for vsync,这就是帧速率远高于60 fps的原因


    关于问题2:出于某种原因,在使用SDL时,会创建两个OpenGL上下文。通过为第二个上下文添加性能计数器,可以看到正确的数字。

    使用GLFW时,还列出了两个上下文。第二种情况也是相关的。