3

我有一个使用 GLUT 进行 OpenGL 渲染的程序。现在我需要将它放在 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

我刚刚浏览了您链接到的教程;在第二页,可以找到以下几行内容(我稍微清理了代码):

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 回答