GlutDisplayFunc

lilington Messages postés 158 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 12 mars 2009 - 15 févr. 2005 à 12:24
Vulpetrus Messages postés 70 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 21 décembre 2005 - 19 févr. 2005 à 11:12
salut j'ai un proble avec la fontion glutDisplayFunc

je veux faire passer une fonction qui a un argument: voici le code



int main(int argc,char** argv)

{

....

....

glutDisplayFunc(display(img)); //you img est un pointeur vers des points;

glutMainLoop();

....

....

system("PAUSE");

return 0;

}





void display(unsigned char* pcx)

{

int x,y,xn,yn,xm,ym,bpl;



xn=*pcx;xn+=*(pcx+1)*256;

yn=*(pcx+2);yn+=*(pcx+3)*256;

xm=*(pcx+4);xm+=*(pcx+5)*256;

ym=*(pcx+6);ym+=*(pcx+7)*256;


bpl=*(pcx+9);bpl+=*(pcx+10)*256;






glClear(GL_COLOR_BUFFER_BIT);



for (x=xn;x

6 réponses

Vulpetrus Messages postés 70 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 21 décembre 2005
16 févr. 2005 à 13:01
La fonction glutDisplayFunc() et toutes les autres fonctions glut ( glutKeyboardFunc()...) doivent faire référence à des fonctions aux arguments déja prédéfinis, à mon avis il n'est pas possible que ta fonction display puissent avoir d'autres arguments que ceux preétablis.

Moi aussi j'avais cherché un moyen de résoudre ce problème, mais je n'ai pas trouvé d'autres solutions que le recours aux variables globales
(static ...) . Pas trés propre mais efficace.

Bon courage ;) !
0
lilington Messages postés 158 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 12 mars 2009
17 févr. 2005 à 04:05
merci mais c'est ce que je me suis résigné à faire

je trouve que c'est du gaspillage de memoir de use des variables globales mais bon.

j'ai pensé à un appel de fonction dans la fonction display() mais pour
éviter que l'appel s'effectu à chaque execution de la fonction
display() on déclare une variable static:



{



bool deja= false;

...

...

if (!deja) function_run();

...

...

...

}







t'en pense koi?
0
lilington Messages postés 158 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 12 mars 2009
17 févr. 2005 à 04:10
j'ai oublié le static:





static bool deja= false;
0
Vulpetrus Messages postés 70 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 21 décembre 2005
17 févr. 2005 à 17:45
Oui je pense que c'est la seule chose à faire pour résoudre ton problème, à moins de reéditer la librairie glut (hum ! ;) ).
moi j'avais déclaré maes variables globales dans le main dans lequel j'avais ajouté toutes mes fonctions glut redéfinies, je pouvais ainsi faire passer des arguments sans trop me prendre la tête , tant que ça marche...

ta variable deja, moi je la mettrais plutôt à l'extérieur des accolades

static bool deja= false;
void main()
{
...
...
if (!deja) function_run();
...
...
...
}
void function_run()
{
...
deja = !deja;
}

Si jamais tu trouve une meilleure solution, pense à moi !!

a+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lilington Messages postés 158 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 12 mars 2009
19 févr. 2005 à 10:35
je crois qu'on c'est pas biencompris:

la variable deja n'est pas dans le main mais dans la function display



c'est pour eviter des répétitions inutiles.
0
Vulpetrus Messages postés 70 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 21 décembre 2005
19 févr. 2005 à 11:12
J'ai compris, mais à l'origine tu voulais faire passer un argument (pointeur de points) à la fonction display(), cet argument risque d'être modifié par une autre fonction non ??


Alors comment veux-tu modifier cet argument devenu variable global par une autre fonction si il est déclaré à l'intérieur de la fonction display() ?
0
Rejoignez-nous