3

OpenGL レンダリングに GLUT を使用するプログラムがあります。別のプログラム コンポーネントと連携できるように、MFC プロジェクト内に配置する必要があります。

私はこのチュートリアルに従いました: http://www.codeguru.com/cpp/gm/opengl/openfaq/article.php/c10975__1/Setting-Up-OpenGL-in-an-MFC-Control.htm

タイマーが起動したときに GLUT 表示コールバックであった関数を呼び出していますが、GLUT アイドル コールバックで発生する何かにレンダリングが依存しているため、機能していません。MFC プログラムで GLUT アイドル コールバックを呼び出す場所がわかりません。そのために作成する必要がある別のイベント ハンドラーはありますか? もしそうなら、どのイベントですか? それとも、私は何か他のことを完全に間違っていますか? 私は OpenGL にかなり精通していますが、これが MFC の最初の経験であるため、おそらくその側で誤りを犯しています。

お時間をいただきありがとうございます。ほんとうにありがとう!

4

1 に答える 1

2

リンク先のチュートリアルを閲覧しました。2ページ目に、次の行に沿った何かが見つかります(コードを少しクリーンアップしました):

void COpenGLControl::OnTimer(UINT nIDEvent)
{
   if(nIDEvent==1)
   {
         glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);    
         oglDrawScene();
         // try to insert your idle function code here
         SwapBuffers(hdc);    
   }
   CWnd::OnTimer(nIDEvent);
}

したがって、基本的にこれはglutIdleFuncチュートリアルで提案されているものに代わるものです。への呼び出しの前に、アイドル関数で呼び出されたコードを挿入しようとするだけSwapBuffersです。

それが役立つことを願っています。

于 2010-07-27T14:42:10.977 に答える