Salut !

Je suis pas encore très débrouillard en OpenGL.
Je cherche à profiter des fonctions de dessin GL - 2D pour l'instant - (i.e. faire des glBegin(GL_POLYGON), glVertex à tout va) et à récupérer le résultat dans un tableau de mon choix.
Je cherche en fait à dessiner ce tableau au début de l'exécution, une fois que c'est rempli je ne le touche plus.

Sur les forums, on parle de glReadPixels qui malgré sa lenteur reconnue rend certains services.
J'ai pensé procéder de la façon suivante :
en testant si c'est la première fois que la callback d'affichage est appelée, j'enchaîne mes opérations de dessin (dans le backbuffer vraisemblablement) enfin je récupère le tout par un glReadPixels, ensuite j'efface tout le backbuffer et je me mets à dessiner la scène que je veux afficher à l'écran (donc sans lien forcé avec le remplissage de mon premier tableau).

Le problème c'est que j'obtiens une segfault, apparemment reliée à la présence de glReadPixels dans display(). (Précision : la segfault disparaît quand je remplace l'argument GL_RGB par GL_COLOR_INDEX dans glReadPixels).

J'arrive à mes fins quand je lance le traitement dans une autre callback notamment celle du click de souris. A ce moment là, pas de problème, je remplis bien mon tableau d'abord avec glReadPixels avant de relancer le dessin de la vraie scène. Mais mon problème c'est que je veux faire ce traitement une fois au tout début et indépendemment de tout click !

Une solution que je pourrais envisager (vu mes besoins), c'est de coder le remplissage de polygones moi-même, de sorte à ne plus avoir à appeler ni glBegin / glVertex et glReadBuffer. Mais si je parvenais à comprendre là où ça cloche, ça m'aiderait à mieux comprendre certains mécanismes. Je crois notamment que je ne suis pas parfaitement au clair avec les histoires de buffers (glDrawBuffer, glReadBuffer, GL_COLOR_BUFFER_BIT, GL_BACK, GL_FRONT, etc..)

Je n'ai pas l'habitude de poster alors j'espère avoir été clair sinon je peux donner toute précision nécessaire.
Merci d'avance pour toute aide !

G.O.