gDEBugger(http://www.gremedy.com)を介してOpenGLプログラムを実行しようとしていますが、いくつか奇妙なことがわかります。
フレームは、gDEBuggerを使用するとはるかに高速にレンダリングされているようです。たとえば、フレームごとにオブジェクトの位置を更新すると、画面上を非常に速く移動しますが、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);
Windows 7とNVidiaグラフィックカード(geforce gtx 660m)を使用しています。
私の質問は、1)と2)で見られる奇妙な行動をどのように説明するのですか?何らかの理由で、レンダリングがグラフィックカードではなくソフトウェアで実行されている可能性がありますか?
UPD:明らかに、SDL_GL_SwapBuffers
各フレームの最後で(レンダリングフレームターミネータの1つとしてリストされていない)呼び出していますが、WindowsのSwapBuffers関数を呼び出すだけでよいと思います。