preobleme reactualisation affichage wxwidgets
Bonjour a tous,
voila je suis en train de faire un visualisateur de volume bianaire aui affiche des volumes chargés a partir d'un fichier. Jusqu ici tou va bien mais j aurai aimé implementer une espece de trackball en enregistrant l deplacement de la souris et en le convertissant en rotation. bref ca aussi marche plutot bien (les valeurs changent bien dans ma fonction mouvement) mais ma fonction d'affichage ne se reactualise pas!! il fau que je sorte ma fenetre et que je la remette sur le bureau pour que la reactualisation se realise?? J ai du oublié une fonction de reactualisation mais laquelle???
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| //ca c est ma fonction de rendu
void TestGLCanvas::Render()
{
wxPaintDC dc(this);
#ifndef __WXMOTIF__
if (!GetContext()) return;
#endif
SetCurrent();
if (!m_init)
{
InitGL();
m_init = true;
}
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();
//ca c etai pour voir si les valeur changeai mais ici rien
wxString text;
text = _T("rotation 1 = ") + wxString::Format("%f",rotationCam[0]);
FramePrincipale->GetStatusBar()->SetStatusText(text,0);
text = _T("rotation 2 = ") + wxString::Format("%f",rotationCam[1]);
FramePrincipale->GetStatusBar()->SetStatusText(text,1);
//les transfo que j aimerai afficher en "temps reel"
glRotatef(rotationCam[1], 0,1,0);
glRotatef(rotationCam[0], 1,0,0);
glTranslatef(-0 , -0 , -100);
//ici normalement y a mes fonction d affichage (un peu long)
glPopMatrix();
glFlush();
SwapBuffers();
}
//et ca c es tma fonction mouvement qui enregistre le deplacement de la souris
inline void TestGLCanvas::OnMouseMove(wxMouseEvent& event)
{
//si on peut bouger la camera
//dans cette fonction, les parametres rotation change bien en "temps reel" ce qui n est pas le cas dans la fonction d affichage
if (m_bRotateCam)
{
rotationCam[0] = rotationCam[0]+(float)(m_nMouseY-event.GetY())*0.2;
rotationCam[1] = rotationCam[1]+(float)(m_nMouseX-event.GetX())*0.2;
m_nMouseX=event.GetX();
m_nMouseY=event.GetY();
}
} |
Si quelqu un a une idee c est cool.
Merci