2010-07-27 5 views
3

J'ai un programme qui utilise GLUT pour son rendu OpenGL. Maintenant, j'ai besoin d'être à l'intérieur d'un projet MFC afin qu'il puisse fonctionner avec un autre composant du programme.Modification des appels GLUT pour travailler avec MFC/C++

J'ai suivi ce tutoriel: http://www.codeguru.com/cpp/g-m/opengl/openfaq/article.php/c10975__1/Setting-Up-OpenGL-in-an-MFC-Control.htm

J'appelle la fonction qui était la fonction de rappel d'affichage de GLUT lorsque les feux de la minuterie, mais qui ne fonctionne pas parce que le rendu dépend de quelque chose qui se passe dans le GLUT rappel au ralenti. Je ne comprends pas où je devrais appeler le callback inactif GLUT dans mon programme MFC. Y a-t-il un gestionnaire d'événements distinct que je devrais faire pour cela, et si oui, quel événement? Ou est-ce que je fais quelque chose d'autre complètement faux? Je suis assez familier avec OpenGL mais c'est ma première expérience avec MFC donc je suis probablement en train de me tromper de ce côté.

Merci beaucoup pour votre temps; J'apprécie vraiment cela!

Répondre

2

Je viens de parcourir le didacticiel auquel vous avez accédé; à la page deux, quelque chose le long des lignes suivantes peuvent être trouvées (je nettoyais le code un peu):

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); 
} 

Donc, cela est essentiellement le remplacement de glutIdleFunc suggéré par le tutoriel. J'essayerais simplement d'insérer le code appelé dans votre fonction d'attente avant l'appel à SwapBuffers.

J'espère que cela aide.

+0

Je pense que cela fonctionne correctement. Merci beaucoup! – laurenelizabeth