whikie
Messages postés99Date d'inscriptionvendredi 24 juin 2005StatutMembreDernière intervention17 septembre 2005
-
21 juil. 2005 à 18:51
whikie
Messages postés99Date d'inscriptionvendredi 24 juin 2005StatutMembreDernière intervention17 septembre 2005
-
21 juil. 2005 à 23:11
Bonjour a tous
Je suis toujours a la decouverte de OpenGL, j'ai meme acheter le livre OpenGL 1.4 Guide Officiel.
Le code qui va suivre est un mélange de tuto trouvé ici et sur Internet avec ce livre.
Le comportement que je trouve etrange est celui ci : j'ai cree une fenetre et une sous fenetre, quand je tape sur le clavier en positionnant la souris sur la sous fenetre (celle qui est milieu de ma fenetre principale) le code fonctionne et j'obtiens l'effet desiré.
Mais si je positionne la souris sur la fenetre principale j'obtiens une erreur fatale
Je ne comprend pas d'ou viens ce changement de comportement.
KeniiyK
Messages postés326Date d'inscriptionvendredi 13 août 2004StatutMembreDernière intervention 2 novembre 20072 21 juil. 2005 à 22:25
Ben fais comme pour OpenGL alors : achetes des books !!!! (au moins un de C pour commencer...)
Je ne pense pas qu' un seul exemple puisse couvrir tout ce qu'il y a comprendre.... mais bon je vais t'aiguiller un peu:
La fonction malloc retourne un pointeur (comme new) et sert a allouer un espace de memoire en nombre d'octets. La fonction free sert a liberer la memoire allouer par malloc (ou realloc,....) et delete pour la memoire allouée par le new.
Je n'irai pas plus loin sur le new et le delete c'est du C++ alors faut pas melanger.
Exemple sur "coucou" on peut faire
char s[7]="coucou";
OU
char *s=NULL;
s=(char*)malloc(7); (ici ca marche car un char est sur un octet.. normalement on fait
malloc(7*sizeof(char));
puis remplir s[i] avec s[6]='\0'; (ne jamais oublier!! enfin des fois si pour des trames par exemple) et condition que s!=NULL.
puis pour liberer s : free(s);
KeniiyK
Messages postés326Date d'inscriptionvendredi 13 août 2004StatutMembreDernière intervention 2 novembre 20072 21 juil. 2005 à 23:00
Ben la seule limite c'est la memoire qu'il te restes.... la RAM donc.
Dans l'exemple que je t'ai donné, j'ai mis 7 en dur dans le malloc mais on peut aussi faire
malloc(X*sizeof(TypeDeDonnée)); avec X étant une variable valant ce quelle vaut au moment de l'execution : c'est l'allocation dynamique...
La limite c'est justement quand on fait des TypeDeDonnées X[10]; ou la on ne peut avoir un 11eme X.
KeniiyK
Messages postés326Date d'inscriptionvendredi 13 août 2004StatutMembreDernière intervention 2 novembre 20072 21 juil. 2005 à 20:36
T'arrives a compiler ??? pas possible c'est une vrai .... ce DEVCPP et ca fait quoi un char[0] comme variable ?
Ne fais qu'un seul appel a MakeRasterFont() (avec un parametre dans Init par exemple), OpenGL est une machine a état... d'ailleurs c'est possible que ton erreur vienne des display lists
whikie
Messages postés99Date d'inscriptionvendredi 24 juin 2005StatutMembreDernière intervention17 septembre 2005 21 juil. 2005 à 21:02
Exact je n'avais pas vu les 2 appels a MakeRasterFont() merci.
c'etait un essai pour pouvoir mettre une variable dans printString
glRasterPos2i(1,POSITIONY+20);
strcat(Phrase,"POUR FAIRE DESCENDRE");// ici la modification de la phrase
printString(Phrase);// la bonne ecriture : printString("la solution la plus simple");
Je ne sais pas si c'est tres politiquement correct mais en faisant ainsi ca a l'air d'initialiser la variable Phrase.
Le but etant de pouvoir avoir une phrase que l'on peut modifier avant de l'afficher.
whikie
Messages postés99Date d'inscriptionvendredi 24 juin 2005StatutMembreDernière intervention17 septembre 2005 21 juil. 2005 à 21:56
ah....j'attaque les choses serieuses on dirait
Je te precise que je debute en C j'ai des notions de programmations mais les mallocs ou new je ne maitrise pas encore.
Pour moi new c'est pour creer un pointeur sur un objet , je crois.
Par contre si tu avais un exemple ca serait sympa
C'est quoi la difference entre C et C++ ?
Je prend l'un ou l'autre puisque le compilo me demande ce que je veux a la creation du projet
whikie
Messages postés99Date d'inscriptionvendredi 24 juin 2005StatutMembreDernière intervention17 septembre 2005 21 juil. 2005 à 23:11
Ok merci et j'ai trouvé d'ou venait le probleme grace a toi.
en fait je faisais grandir ma variable dans la fonction display qui est appele regulierment d'ou le depassement.
la solution etait de faire le changement dans la fonction clavier avec la bonne initialisation bien sur