Optimiser SDL - C++ - Programmation
Marsh Posté le 30-08-2007 à 17:01:16
Define.h :
Code :
|
Car.h
Code :
|
Car.cpp
Code :
|
main.cpp
Code :
|
Marsh Posté le 30-08-2007 à 22:12:53
Salut !
en fait ton problème viens de la manière dont tu déplace ta voiture : ce que tu fait c'est que tu incrémente la position de ta voiture en juste en ajoutant la vitesse (fois le ratio du cos / sin) et celà dans la boucle d'affichage. Le truc c'est que ta voiture a donc un mouvement fortement dépendant des FPS de ton programme : c'est a chaque frame que ta voiture va changer de place. Or si tu modifie la taille de ta fenêtre, tu vas inévitablement changer de nombre d'image affiché par seconde et donc de nombre de fois que tu incrémente la position de la voiture...
Alors la solution serai que plutôt de faire une incrémentation constante (v*sin(angleR)) tu utilise un timer qui te permet de changer en fonction du temp qui s'est passé entre deux frames la valeur de l'incrémentation donc un truc du genre :
Code :
|
avec "dt" qui vaut le temps qui s'est déroulé entre 2 frames et comme ça tu aurra le même mouvement quel que soit la machine qui le fait tourner et quel que soit la taille de la fenêtre
(Et en plus ça fera plus vrai comme formule de calcul de position (homogénéité des formule et tout...) )
Marsh Posté le 30-08-2007 à 22:38:27
oulaaaaaa je suis un tres simple debutant en programmation comment puige obtemier le temps entre 2 frame ?
Marsh Posté le 30-08-2007 à 22:54:35
Tiens :
http://www.siteduzero.com/tuto-3-6 [...] #ss_part_3
Ca parle essentiellement d'OpenGL mais avec SDL.
Et si je me souviens bien la gestion de la vitesse d'anim est réalisée avec des fonctions fournies par SDL. Donc pas de soucis pour toi.
Pas de panique si ça parle d'OpenGL et de 3D, c'est exactement la même solution pour ton problème.
Et puis... Si je peux me permettre un conseil, évite de passer de suite à des calculs d'angles, ça fait mal aux yeux quand tu débute. Je sais de quoi je parle.
Edit :
Oui c'est bien réalisé avec une fonction SDL (SDL_GetTicks()) et deux trois calculs.
Je t'invite également à lire la partie suivante du tuto : Ne pas monopoliser le CPU
Marsh Posté le 30-08-2007 à 23:07:53
:s le pire c'est que je l'ai deja lu mais je m'en servait pas pasque c'etait un peu plus compliqué
Marsh Posté le 30-08-2007 à 23:20:40
a une derniere chose quand je crée une fenetre en SDL elle s'afiche nimporte ou dans l'ecran existerais t'il une methode (comme celle pour l'opengl) pour pouvoir la metre a un endoir preci
merci d'avence
Marsh Posté le 30-08-2007 à 23:28:00
on laisse tomber opengl
je demande juste s'il ya une fonction qui permet de definir la position de la fenetre a l'ecran en SDL
Marsh Posté le 30-08-2007 à 23:42:10
pasque je refait la doc 10 fois et je trouve pas (enfin elle est en anglais aussi)
Marsh Posté le 31-08-2007 à 10:27:49
bah au niveau interface graphique des os tu as toujours moyen de positionner/redimentionner la fenêtre.
ce serait étonnant que tu n'est pas l'abstraction de ça dans la SDL.
Marsh Posté le 05-09-2007 à 11:37:13
pour bouger la fenêtre, une piste :
http://www.gamedev.net/community/f [...] _id=328286
Marsh Posté le 30-08-2007 à 15:59:46
bonjuour voial je trouve que la SDL ne fonctionne pas tres bien sur mon pc.
Je m'explique je viens de creer une fenetre avec une voiture qui se balade or quand je chage la dimention de la fenetre (je la met plus grande) la voiture va beaucoup moins vite pourtant c'est qu'un programme tres leger et mon ordi est assez puissant :
core 2 duo 6300;
6600GT;
1280mo 3200;
80go western digital;
windows xp;
je fait touner des jeux 3D avec de bon graphismes et c'est ce programme de rien fonctionne pas bien je comprend pas
est que je code comme un pied ou la SDL n'est pas optimisé pour mon pc ????