Bonjour à tous et désoler d'avance dans le cas où je post dans la mauvaise section car je ne suis pas sûr ^^
Je bosse actuellement sur un projet de Viewer de fichiers CAO en C++/Win32/OpenGL, je travaille avec l'api windows en C (donc pas de MFC) et j'ai un petit problème d'affichage. Enfaite j'ai une fenêtre principale qui contient plusieurs sous-fenêtres, contenant statusbar, toolbar, un treeview et une fenêtre contenant un affichage OpenGL.
En gros dans ma boucle de message j'ai ça :
OpenGL_Render met à jour la scène et finit par un SwapBuffer pour l'afficher, et dans mon windowproc je fais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 if(PeekMessage(&msg,NULL,0,0,PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } else { OpenGL_Render(); }
Vu que mon application est fenêtré et que des boites de dialogues peuvent passer dessus cela aurait du me permettre de rafraichir la scène au bon moment.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 case WM_PAINT: { SwapBuffers(g_pEngine->getDevice()); ValidateRect(hWnd,NULL); break; }
Donc bon déjà premier problème dans mon WM_PAINT, Swapbuffer ne convient pas, j'aimerais juste que OpenGL reaffiche la dernière frame (qui est devenu le front buffer après le swap) de sorte que si l'utilisateur déplace une boite de dialogue sur ma fenêtre celle-ci soit comme mis en pause mais qu'il n'y est pas d'artefacts.
De plus, et là il n'est pas question d'OpenGL, j'ai des problèmes d'actualisation d'affichage avec les autres fenêtres, quand une boite de dialogue se met sur mon treeview il peut arriver qu'un artefact se mette dessus...
Encore plus génant, à un momen j'utilise une fenêtre non-modale pour gérer une barre de chargement et là c'est le drame, la fenêtre s'affiche vraiment très mal, on la voit complète une fraction de seconde quand elle apparait, puis on dirait que la fenêtre principale essaye de dessiner par dessus, au final il reste plus qu'un cadre gris et les barres de chargement qui évoluent (on ne voit même plus les textes au dessus de la barre de chargement).
Si quelqu'un à déjà rencontrer ce genre de problème ou a une idée pour les résoudre je suis preneur.
Merci d'avance
Partager