Problème d'animation avec OpenGL..... - C++ - Programmation
Marsh Posté le 20-10-2005 à 23:13:48
Faudrait deja clear le zbuffer...
edit : bon sinon c'est un probleme de programation evenementielle. Tu t'es demandé quand étais appelée ta fonction affichage?
Marsh Posté le 20-10-2005 à 23:21:29
bah en fait j'me doute que la fonction affichage est appelé uniquement quand windows détecte une modification au niveau de la fenêtre...dc comment appeler "affichage()" par exemple toutes les 0.5s ???
C'est très loin d'être clair tout ça....merki
Marsh Posté le 21-10-2005 à 10:57:37
Salut,
Je ne sais si je vais pouvoir t'aider car je n'ai que 2 jours d'opengl et je ne connais pas ton langage. Alors, dis moi si j'ai bien compris ce que tu as codé: tu définis ton carré avec ses coordonnée, coordonnées que tu modifies en fin (y - 50) et tu veux que ce soit ta fonction affichage qui aille rechercher ton "objet" carré avec les nouvelles coordonnées ? Si c'est cela, à ta place je ferai autrement:
Si j'ai bien compris, opengl est un "moteur" graphique statique" librairie, donc il affiche lorsque les paramètres que tu lui passe changent. Donc pas la peine de vouloir passer par la fonction affichage pour les animes.
Tu crées une fonction qui décrit ta translation: de y_début à y_max avec un pas de n. Dans ta fonction affichage avant le carré tu mets (gltranslated x (appel_fonction) z) (avec la bonne syntaxe) et tu reinitialise tes coordonnées pour le cadre avec un glLoadIdentity.
Et puis tiens: http://www-evasion.imag.fr/Membres [...] engl3.html
plus le fameux site Nehe avec pleins d'exemple de code. (Y'en a trop peu pour scheme )
Maintenant si j'ai dit des conneries, dites le moi, ça pourra me servir.
A+
Marsh Posté le 21-10-2005 à 12:00:53
OpenGL n'est pas un moteur, c'est une librairie.
Elle fait ce qu'on lui demande.
Quant à appeler une fonction qui modifie l'etat de la simu dans la fonction d'affichage, c'est une mauvaise idée.
La fonction d'affichage, comme son nom l'indique est faite pour afficher.
Dans le cas présent, la simu c'est le jeu tetris. Le programe doit avoir une représentation interne de l'état du jeu indépendante d'une quelconque méthode de rendu.
Marsh Posté le 21-10-2005 à 12:29:30
Retrox -> Ah ok merci et donc désolé.
Cependant une question, en essayant de ne pas pourrir son topic (et peut être, mes suis-je mal exprimé, problème de lexique spécifique): dans mes exemples, on va prendre celui d'un rotation
L'auteur définit un compteur pour la rotation:
Code :
|
puis dans la fonction principale d'affichage:
Code :
|
Bon, je mets pas tout le code, mais ça ressemble plus à ce que je voulais lui expliquer. Et ça, c'est "mal"?
Marsh Posté le 21-10-2005 à 13:25:11
Si c'est juste pour faire tourner un triangle, c'est pas "mal". Mais quand il s'agit de faire des choses un peu plus compliquées (par exemple, quand dans son tetris il y aura quelques dizaines de pieces deja tombées), c'est pas dans la fonction d'affichage qu'il faut gérer ça. Une fonction d'affichage doit normalement afficher l'état d'une simulation à un instant donné.
Marsh Posté le 21-10-2005 à 13:48:30
Une dernière et j'arrête, j'effacerai mes posts à la demande.
Retrox -> on est d'accord. En fait j'avais mal compris la question. J'avais cru comprendre qu'en fait il voulait appeler régulièrement sa fonction affichage, laquelle se chargeait de modifier le système puisque son changement de coordonnées se faisait dans la définition de carré(), à la fin.
Alors qu'en fait, c'est le système qui doit appeler l'affichage lorsqu'il change. Le peu que j'avais compris de son code et de sa question me faisait penser qu'il essayait via pour la première solution. Mais mes connaissances sont faibles. Donc Dsl -->[]
Marsh Posté le 20-10-2005 à 22:57:54
bonsoir tt le monde,
J'ai un gros problème!!Je suis en école d'ingé et j'ai un projet en C++ qui est de concevoir un Tétris avec OpenGL et GLUT... Mais pour l'instant j'ai dessiné l'interface (je sais c'est hyper moche....) et j'ai dessiné un carré rouge mais je n'arrive à faire bouger selon y ce dernier....En fait il bouge uniquement quand je réduis et je restaure la fenêtre.....
Voilà mon code :
Donc en fait j'aimerai que le carré rouge bouge selon y comme dans un Tétris normal c'est-à-dire à intervalle de temps régulier.....
Merki bcp pour vos répoonses!!!
A+