我有一个使用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/