将GLUT调用更改为与MFC/C++兼容

3
我有一个使用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,所以我可能会出错。
非常感谢您的时间;我真的很感激!
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 之前插入您空闲函数中的代码。

希望这可以帮助到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接