Bonjour,
Je suis en train de développer un programme avec une interface faite avec Qt. Cette interface contient deux QDockWidget (un à gauche et l'autre à droite) et au centre se trouve un zone de rendu OpenGL. Cette zone de rendu est géré par un objet héritant de QGLWidget et qui redéfinit notamment la fonction resizeGL.
Mon problème est que j'ai un souci de déformation si je me sers des valeurs width et height telles quelles fournies en argument par resizeGL pour définir le viewport.
ma fonction resizeGL est ainsi :
Avec ce code, un carré devient un rectangle :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 glViewport(0, 0, (GLint)largeur, (GLint)hauteur); m_camera->resize(largeur, hauteur);
pour que mon carré reste un carré, il faut que je fasse ceci :
j'ai ainsi le résultat souhaité, sauf que je perds une partie de ma zone de rendu (forcement, une bande à droite de 100 vu que c'est moi qui lui demande) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part glViewport(0, 0, (GLint)largeur - 100, (GLint)hauteur);
Je ne comprends pas pourquoi cette déformation a lieu et à part cette solution bancale je n'ai pas réussi à trouver mieux. Si vous avez des idées...
Je précise que la fonction resize de la camera se charge de calculer la matrice projection, mais à priori le problème ne vient pas de là car j'ai remplacé mes calculs par un appel à gluperspective sans que ça change rien.
Partager