cs_goondy
Messages postés95Date d'inscriptionjeudi 9 octobre 2003StatutMembreDernière intervention 7 janvier 2005
-
11 déc. 2004 à 22:20
Quicky24
Messages postés29Date d'inscriptionvendredi 5 décembre 2003StatutMembreDernière intervention15 avril 2005
-
15 avril 2005 à 15:10
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Quicky24
Messages postés29Date d'inscriptionvendredi 5 décembre 2003StatutMembreDernière intervention15 avril 2005 15 avril 2005 à 15:10
mon code ne marche pas sur XP fait chier ça!!
Quicky24
Messages postés29Date d'inscriptionvendredi 5 décembre 2003StatutMembreDernière intervention15 avril 2005 9 mars 2005 à 21:23
ah oui j'ai oublié j'ai corrigé le bug: mais il est encore sur l'ordi.
Quicky24
Messages postés29Date d'inscriptionvendredi 5 décembre 2003StatutMembreDernière intervention15 avril 2005 9 mars 2005 à 21:21
slt alesx tu compiles avec quel IDE?
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 20102 21 févr. 2005 à 21:35
oui... il dit quoi le compilo?
mickbad
Messages postés71Date d'inscriptionmercredi 17 juillet 2002StatutMembreDernière intervention20 avril 2008 21 févr. 2005 à 09:47
salut,
Tu as essayé d'ajouter .h aux includes ?
Parfois les compilateurs n'acceptent pas ce genre de syntaxe:
#include
et tu peux nous écrire au moins un message d'erreur pour nous aiguiller ? :)
Mick
cs_Alesx
Messages postés20Date d'inscriptionsamedi 5 février 2005StatutMembreDernière intervention 6 juillet 2006 18 févr. 2005 à 17:05
Moi qui suis sur un projet similaire, j'me suis dit youhou ! voilà un chti gars super cool.
Mais en fait quand je compile le tout, j'ai un problème avec tous les include iostream, cstdio lib arg , list?
Sauriez vous pourquoi ?????
Quicky24
Messages postés29Date d'inscriptionvendredi 5 décembre 2003StatutMembreDernière intervention15 avril 2005 15 déc. 2004 à 18:08
oh c vrai ils donnent pas, c'est "n.le_forestier@tiscali.fr"
Quicky24
Messages postés29Date d'inscriptionvendredi 5 décembre 2003StatutMembreDernière intervention15 avril 2005 15 déc. 2004 à 18:06
Arnaud> bah tu cliques sur mon avar et tu auras mon e-mail.
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 20102 14 déc. 2004 à 21:54
j'ai refait ton prog il marche impec now.
file moi ton mail que je te l'envoie
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 20102 14 déc. 2004 à 21:26
G recompilé.
c'est zarbi ce truc.
mon exe fait 1 Mo optimisé au max.
le fps est bloqué, mais en aggrandissant la fenetre le vitesse diminue, ca devrait pas puisque le fps ne change pas...
??
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 20102 14 déc. 2004 à 21:22
Naaaaan...
le but n'est pas de réguler le fps.
le but est d'avoir au contraire un fps le plus élevé possible, pour en conservant la meme vitesse de déplacement des spheres quelque soit le fps.
dans ton prog tu as une variable temps.
remplace e-=2 par e-=10*temps
(temps déclaré en global, c'est le cas je crois)
tu verras la ca marchera bien, meme en aggrandissant la fenetre la vitesse sera constante.
par contre ta maj refuse ded se lancer (la fenetre se crée mais n'affiche rien, et 600Ko pour un exe c'est gros je trouve.
Quicky24
Messages postés29Date d'inscriptionvendredi 5 décembre 2003StatutMembreDernière intervention15 avril 2005 14 déc. 2004 à 13:57
Arnaud16022> j'ai modifié mon code et j'ai trouvé comment régulé les fps jusqu'a 60 et merci pour l'aide
:-)
goondy> tu as raison mais avec les textures ça va ralentir les FPS.
quicky24
mickbad
Messages postés71Date d'inscriptionmercredi 17 juillet 2002StatutMembreDernière intervention20 avril 2008 14 déc. 2004 à 08:54
Arnaud16022> salut,
de mémoire non pas vraiment mais les fonctions printf, sprintf, snprintf, vprintf, vsnprintf proviennent de "l'api" standard du C (stdio.h). Donc tu peux "logiquement" trouver les détails dans tout bon tutorial ou livre tel que "Le Language C" de Kernighan et Ritchie (livre référence de base même si ça date un peu ;)
Pour résumer un peu (de ce que tu sais certainement implicitement :) :
- printf te sert à afficher du texte formatée sur stdout (au même titre que fprintf(stdout ...))
- sprintf fait la même chose sauf que le flux est stocké dans une mémoire préalablement allouée
- snprintf (ce que j'utilise le plus en C) n'a de différence avec sprintf qu'avec la taille de sortie du flux : en gros, snprintf(buf, 256, "%d", 3) te place 3 dans buf mais sachant que si le texte formaté dépasse 256 caractères, il sera tronqué !
-vsprintf / vsnprintf : idem que sprintf et snprintf sauf que les arguments du texte formaté est sous la forme d'une liste (va_list) : utile qd tu es dans une fonction de type void foo(char* gnagna, ...) où tu ne connais pas le nombre d'argument. [l'exemple d'utilisation de vs[n]printf donné dans cette source (.h) est parfaite]
Voilà pour la théorie :)
En pratique l'utilisation de *nprintf est conseillé car tu es sur d'une chose : il n'y aura pas de débordement de capacité sur ta zone allouée (à moi que tu te trompes dans la taille à fournir :)))
Le risque : plantage de ton programme (et pas forcément à l'endroit de cette faute ... ça vient *toujours* plus tard à un endroit inattendu), mémoire non libéré entièrement => instabilité du prgm ou sysème, trou de sécurité (surtout si cette zone correspond à une entrée utilisateur qui peut injecter du code supplémentaire via ton interface)
Tout est relatif à l'échelle du programme naturellement ;)
Tiens de même avec string.h, il vaut mieux utiliser strncpy plutot que strcpy, strncat plutôt que strcat ...
au niveau des liens, je vais rechercher mais pas évident de trouver des comparatifs de fonctions standard
j'espère t'avoir répondu
MickBad
cs_goondy
Messages postés95Date d'inscriptionjeudi 9 octobre 2003StatutMembreDernière intervention 7 janvier 2005 13 déc. 2004 à 19:22
Mouais c vrai que sur le coup j'avais pas capté ce qu'il voulait dire par changer les fps, j'ai pas pensé à le dire! lol
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 20102 13 déc. 2004 à 19:12
oh et si on pouvait voir du dessus ca serait cool...
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 20102 13 déc. 2004 à 19:11
ben voila c'est quand meme autre chose!
cependant quelques problemes encore:
la taille du .exe : 242Ko ca me parait gros... va voir dans l'aide du compilo comment optimiser ca.
la phrase 'pour accelerer les fps, appuyez sur f' ne veut RIEN dire, meme si ds le prog ca fait fps++;le probleme c'est que tu fais
glRotated(-e,0,1,0); e -= 2;
aieaieaie.
ce qu'il faudrait faire c'est
glRotated(-e,0,1,0); e -= DeltaTemps;
if(fps > 60) { fps -= 2.00; } ne sert a rien du tout (mais alors vraiement a rien...)
et voila...
mickbad -> t'as un lien sous le coude qui expliquerait la différence entre ces 2 fonctions plus précisément? merci.
Quicky24
Messages postés29Date d'inscriptionvendredi 5 décembre 2003StatutMembreDernière intervention15 avril 2005 13 déc. 2004 à 15:31
merci de ces précisions MickBad.
quicky24
mickbad
Messages postés71Date d'inscriptionmercredi 17 juillet 2002StatutMembreDernière intervention20 avril 2008 13 déc. 2004 à 09:01
Bonjour,
Bonne source pour commencer effectivement mais manque alors quelques commentaires : un débutant peut ne pas comprendre du premier coup certaines instructions, non ? Tu en as mis je sais mais pour une source de démonstration : plus on met de commentaire, mieux c'est ;)))
D'autre part du point de vue technique de programmation (hors opengl tout de même car c'est limpide ce que tu as écris :), je te conseille d'utiliser dans Ecrire(GLdoubel, GLdouble, char*, ...) la fonction *vsnprintf* plutôt que *vsprintf*.
Pourquoi ? risque latent de débordement de capacité de ton buffer !
ce qui donne :
---------------------------------------------------
va_list args;
char buffer[255], *s;
va_start(args, format);
vsprintf(buffer, 255, format, args);
va_end(args);
---------------------------------------------------
C'est de la technique pure qui n'a rien à voir mais qui peut te servir un jour ;)
Enfin, évite de définir des fonctions dans le .h sauf si (en c++) c'est déclaré en tant que "inline".
Quoi rabajoie, héhé ... juste que si tu as plusieurs CPP utilisant ce .H à compiler et assembler ensuite, tu auras des erreurs de fonctions déjà définies (surtout avec gcc, mingw, ...)
Good job, guy ;)
MickBad
cs_goondy
Messages postés95Date d'inscriptionjeudi 9 octobre 2003StatutMembreDernière intervention 7 janvier 2005 11 déc. 2004 à 22:20
15 avril 2005 à 15:10
9 mars 2005 à 21:23
9 mars 2005 à 21:21
21 févr. 2005 à 21:35
21 févr. 2005 à 09:47
Tu as essayé d'ajouter .h aux includes ?
Parfois les compilateurs n'acceptent pas ce genre de syntaxe:
#include
et tu peux nous écrire au moins un message d'erreur pour nous aiguiller ? :)
Mick
18 févr. 2005 à 17:05
Mais en fait quand je compile le tout, j'ai un problème avec tous les include iostream, cstdio lib arg , list?
Sauriez vous pourquoi ?????
15 déc. 2004 à 18:08
15 déc. 2004 à 18:06
14 déc. 2004 à 21:54
file moi ton mail que je te l'envoie
14 déc. 2004 à 21:26
c'est zarbi ce truc.
mon exe fait 1 Mo optimisé au max.
le fps est bloqué, mais en aggrandissant la fenetre le vitesse diminue, ca devrait pas puisque le fps ne change pas...
??
14 déc. 2004 à 21:22
le but n'est pas de réguler le fps.
le but est d'avoir au contraire un fps le plus élevé possible, pour en conservant la meme vitesse de déplacement des spheres quelque soit le fps.
dans ton prog tu as une variable temps.
remplace e-=2 par e-=10*temps
(temps déclaré en global, c'est le cas je crois)
tu verras la ca marchera bien, meme en aggrandissant la fenetre la vitesse sera constante.
par contre ta maj refuse ded se lancer (la fenetre se crée mais n'affiche rien, et 600Ko pour un exe c'est gros je trouve.
14 déc. 2004 à 13:57
:-)
goondy> tu as raison mais avec les textures ça va ralentir les FPS.
quicky24
14 déc. 2004 à 08:54
de mémoire non pas vraiment mais les fonctions printf, sprintf, snprintf, vprintf, vsnprintf proviennent de "l'api" standard du C (stdio.h). Donc tu peux "logiquement" trouver les détails dans tout bon tutorial ou livre tel que "Le Language C" de Kernighan et Ritchie (livre référence de base même si ça date un peu ;)
Pour résumer un peu (de ce que tu sais certainement implicitement :) :
- printf te sert à afficher du texte formatée sur stdout (au même titre que fprintf(stdout ...))
- sprintf fait la même chose sauf que le flux est stocké dans une mémoire préalablement allouée
- snprintf (ce que j'utilise le plus en C) n'a de différence avec sprintf qu'avec la taille de sortie du flux : en gros, snprintf(buf, 256, "%d", 3) te place 3 dans buf mais sachant que si le texte formaté dépasse 256 caractères, il sera tronqué !
-vsprintf / vsnprintf : idem que sprintf et snprintf sauf que les arguments du texte formaté est sous la forme d'une liste (va_list) : utile qd tu es dans une fonction de type void foo(char* gnagna, ...) où tu ne connais pas le nombre d'argument. [l'exemple d'utilisation de vs[n]printf donné dans cette source (.h) est parfaite]
Voilà pour la théorie :)
En pratique l'utilisation de *nprintf est conseillé car tu es sur d'une chose : il n'y aura pas de débordement de capacité sur ta zone allouée (à moi que tu te trompes dans la taille à fournir :)))
Le risque : plantage de ton programme (et pas forcément à l'endroit de cette faute ... ça vient *toujours* plus tard à un endroit inattendu), mémoire non libéré entièrement => instabilité du prgm ou sysème, trou de sécurité (surtout si cette zone correspond à une entrée utilisateur qui peut injecter du code supplémentaire via ton interface)
Tout est relatif à l'échelle du programme naturellement ;)
Tiens de même avec string.h, il vaut mieux utiliser strncpy plutot que strcpy, strncat plutôt que strcat ...
au niveau des liens, je vais rechercher mais pas évident de trouver des comparatifs de fonctions standard
j'espère t'avoir répondu
MickBad
13 déc. 2004 à 19:22
13 déc. 2004 à 19:12
13 déc. 2004 à 19:11
cependant quelques problemes encore:
la taille du .exe : 242Ko ca me parait gros... va voir dans l'aide du compilo comment optimiser ca.
la phrase 'pour accelerer les fps, appuyez sur f' ne veut RIEN dire, meme si ds le prog ca fait fps++;le probleme c'est que tu fais
glRotated(-e,0,1,0); e -= 2;
aieaieaie.
ce qu'il faudrait faire c'est
glRotated(-e,0,1,0); e -= DeltaTemps;
if(fps > 60) { fps -= 2.00; } ne sert a rien du tout (mais alors vraiement a rien...)
et voila...
mickbad -> t'as un lien sous le coude qui expliquerait la différence entre ces 2 fonctions plus précisément? merci.
13 déc. 2004 à 15:31
quicky24
13 déc. 2004 à 09:01
Bonne source pour commencer effectivement mais manque alors quelques commentaires : un débutant peut ne pas comprendre du premier coup certaines instructions, non ? Tu en as mis je sais mais pour une source de démonstration : plus on met de commentaire, mieux c'est ;)))
D'autre part du point de vue technique de programmation (hors opengl tout de même car c'est limpide ce que tu as écris :), je te conseille d'utiliser dans Ecrire(GLdoubel, GLdouble, char*, ...) la fonction *vsnprintf* plutôt que *vsprintf*.
Pourquoi ? risque latent de débordement de capacité de ton buffer !
ce qui donne :
---------------------------------------------------
va_list args;
char buffer[255], *s;
va_start(args, format);
vsprintf(buffer, 255, format, args);
va_end(args);
---------------------------------------------------
C'est de la technique pure qui n'a rien à voir mais qui peut te servir un jour ;)
Enfin, évite de définir des fonctions dans le .h sauf si (en c++) c'est déclaré en tant que "inline".
Quoi rabajoie, héhé ... juste que si tu as plusieurs CPP utilisant ce .H à compiler et assembler ensuite, tu auras des erreurs de fonctions déjà définies (surtout avec gcc, mingw, ...)
Good job, guy ;)
MickBad
11 déc. 2004 à 22:20
dézipper et prendre glut32.dll pour le mettre dans C:\windows\system32
C bien pour commencer, mais t'as deux planètes qui se rentrent dedans, et tu devrais chercher des textures toutes faites pour les planètes ;)
Mais bon, c'est bien pour le début de l'OpenGL avec GLUT.