изменение вызовов GLUT для работы с MFC / C ++ - PullRequest
3 голосов
/ 27 июля 2010

У меня есть программа, которая использует 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. Я не понимаю, где я должен вызывать обратный вызов GLUT в моей программе MFC. Есть ли для этого отдельный обработчик событий, и если да, то какое событие? Или я делаю что-то еще совершенно неправильно? Я довольно хорошо знаком с OpenGL, но это мой первый опыт работы с MFC, поэтому я, вероятно, ошибаюсь на этой стороне.

Большое спасибо за ваше время; Я очень ценю это!

1 Ответ

2 голосов
/ 27 июля 2010

Я только что просмотрел туториал, на который вы ссылались;на второй странице можно найти что-то вроде следующего (я немного очистил код):

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.

Надеюсь, это поможет.

...