Impossible d’appeler des fonctions liées à OpenGL en dehors d’InitializeGL et de PaintGL

Comme le titre l’indique, à l’intérieur de Qt, je suis incapable d’utiliser ou d’appeler des fonctions OpenGL en dehors des fonctions de QGLWidget telles que initializeGL() et paintGL() .

J’essaie de créer un modèle 3D après avoir appelé un emplacement de ma classe QMainWindow . Tout semble fonctionner correctement, tous les sumts sont chargés. Cependant, lorsque j’essaie de dessiner mon modèle, une exception de référence NULL est générée. ce qui se produit le plus souvent quand trop peu de sumts sont fournis.

La même fonction de construction fonctionne lorsque je l’utilise dans initializeGL() .

C’est en fait assez simple: en dehors de ces fonctions, le contexte de QGLWidget n’est pas actuel. Vous pouvez rendre le contexte actuel en appelant QGLWidet :: makeCurrent (). Un meilleur moyen de contourner ce problème consiste à différer l’appel de toutes les fonctions GL à l’intérieur de paintGL, car cela garantit que le contexte est actuel et que vous ne risquez pas de vous mêler de tout autre problème openGL en modifiant le contexte.