C++ 在gDebugger中运行我的程序时出现奇怪的结果
我试图通过gDEBugger()运行一个OpenGL程序,我看到了一些奇怪的事情:C++ 在gDebugger中运行我的程序时出现奇怪的结果,c++,debugging,opengl,graphics,C++,Debugging,Opengl,Graphics,我试图通过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时,还列出了两个上下文。第二种情况也是相关的。