我有一个使用GLUT进行OpenGL渲染的程序。现在,我需要将其放在MFC项目中,以便它可以与其他程序组件一起使用。

我已按照本教程进行操作:http://www.codeguru.com/cpp/g-m/opengl/openfaq/article.php/c10975__1/Setting-Up-OpenGL-in-an-MFC-Control.htm

我正在调用计时器触发时作为GLUT显示回调的函数,但这不起作用,因为呈现取决于GLUT空闲回调中发生的事情。我不明白在MFC程序中应该在哪里调用GLUT空闲回调。我应该为此做一个单独的事件处理程序吗?如果是,哪个事件?还是我做其他完全错误的事情?我对OpenGL相当熟悉,但这是我第一次使用MFC,因此我可能对此很不满意。

非常感谢您的宝贵时间;我真的很感激!

最佳答案

我刚刚浏览了您链接到的教程;在第二页上,可以找到以下几行内容(我对代码进行了一些整理):

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之前插入在您的空闲函数中调用的代码。

希望对您有所帮助。

关于c++ - 更改GLUT调用以与MFC/C++一起使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3344583/

10-11 18:58