Probleme resolution SDL c++

Fermé
ayor - 24 févr. 2009 à 01:17
 ayor - 24 févr. 2009 à 17:59
Bonjour,

J'ai un soucis au niveau de la resolution de mon ecran en utilisant la SDL,mon problème est le suivant,je definis la taille de ma fenetre avec

ecran = SDL_SetVideoMode(800,640,32, SDL_HWSURFACE);

jusque la tout va bien

Mais au moment ou ensuite je veux Placer une image sur cet écran les coordonnées ne semble pas respectées.

SDL_Rect Pslayer;
Pslayer.x = 400;
Pslayer.y = 450;

img = SDL_LoadBMP("persodroite.bmp");
SDL_BlitSurface(img,NULL,ecran,&Pslayer);
SDL_Flip(ecran);

Si je definit y a 450 mon image sera tout en bas de mon cadre,qui logiquement devrait faire 640px(dans le cas ou je mais plus mon image disparait peu a peu...).Je precise que je n'est pas saisie les declarations des pointeurs etc pour ne pas surcharcher d'infos inutiles ce post.Tout fonctionne,le seul problème est cette divergence.

Merci d'avance

2 réponses

Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
24 févr. 2009 à 08:31
Salut.
regarde la doc de SDL_SetVideoMode
Il me semble que c'est un mode plain écran. En général un affichage ne fonctionne qu'en certain modes, par exemple, 640*480, tous les couples ne sont pas possible (il y a toujours sur les OS une liste des modes supporté). Et 800*640 ne me semble pas standard, en général c'est 800*600.
Donc, si la fonction se comporte comme je le pense, elle utilise le mode video le plus proche, mais semble conservé la valeur que tu lui donnes. D'où une différence de 40 pixels entre ce que tu penses et l'affichage.
Enfin, ce n'est qu'une théorie, test 800*600.
0
MErci de ta reponse,
Mais je ne pense pas que se soit le fait que certains couple ne sont pas valides,pour en avoir le coeur net j'en est testé plusieurs(800*600 ...),le résultat est le même.
Quand je définis ma fenêtre pour y=600 si je met mon image au coordonnées y=600 elle est beaucoup trop basse.

Merci si quelqu'un a des suggestions...
0