Bonjour a tous,
Je butte sur un problème dans mon application.
Je dispose d'un main thread avec un fenêtre win32 basique.
Un autre thread fait le rendu.
Je dispose de 4 viewport (glViewport + glScissor ).
A chaque boucle de rendu je fais
1 - Pour chaque viewport
- glViewport
- glScissor
- glClear(GL_COLOR_BUFFER_BIT)
- glFinish
2 - SwapBuffers(HDC)
Je me retrouve avec dans mon exemple un viewport rouge et les autre tout noir.
Lorsque je resize la fenêtre Windows, de temps en temps, j'ai un flicker des viewport. Je vais décrire au mieux les choses mais n'hésiter pas à me demander plus de renseignement si nécessaire.
Donc, le flicker correspond en fait ( je pense ) au fait que je suis en double buffering. les viewports sont resize sur l'event WM_EXITSIZEMOVE, lorsque je le catch et je calcule la nouvelle taille des viewports, je n'effectue pas ici de glViewport ou glScissor, je ne fais que set des variables (x,y,height,width).
Je me retrouve en diminuant la fenêtre, avec un buffer qui affiche la bonne taille puis la frame d'après le buffer contient la taille d'avant la fin du resize. Je me retrouve donc avec un viewport rouge qui est une frame sur deux d'une taille différente. pourtant glViewport et glScissor est appeler pour chaque viewport à chaque frame.
J'avoue ne pas comprendre. Je ne sais pas si le problème vient de ma gestion de l'API win32 ou de OpenGL.
Merci
Partager