SDL: afficher un BMP

yugiohjcj Messages postés 26 Date d'inscription samedi 3 juillet 2004 Statut Membre Dernière intervention 18 août 2004 - 11 août 2004 à 16:12
yugiohjcj Messages postés 26 Date d'inscription samedi 3 juillet 2004 Statut Membre Dernière intervention 18 août 2004 - 18 août 2004 à 23:56
Bonjour,
c'est mon deuxième message sur ce forum pour un problème avec SDL.
Cette fois, je n'arrive pas à afficher une image BMP.
Voici la source:
void ShowBMP(char *file, SDL_Surface *screen, int x, int y)
{
SDL_Surface *image;
SDL_Rect dest;

/* Charger une image BMP dans une surface*/
image = SDL_LoadBMP("openlogo-100.bmp");
if ( image == NULL ) {
fprintf(stderr, "Impossible de charger %s: %s\n", file, SDL_GetError());
return;
}
/* Copie à l'écran.
La surface ne doit pas être bloquée maintenant
*/
dest.x = x;
dest.y = y;
dest.w = image->w;
dest.h = image->h;
SDL_BlitSurface(image, NULL, screen, &dest);
/*Mise à jour de la portion qui a changé */
SDL_UpdateRects(screen, 1, &dest);
}
Voilà. Et ya pas d'erreur lors de la compil mais ça n'affiche rien. Pour ce code, j'ai repris celui de la dc sur libsdl.org et j'ai juste modifier la valeure de SDL_LoadBMP(); pour mettre le nom de mon fichier.
Aidez-moi SVP.
/*Acheter, Vendre, Echanger des cartes Yu-Gi-Oh! Jeu de Cartes à Jouer sur yugiohjcj.free.fr*/

17 réponses

Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
11 août 2004 à 20:01
Je connais pas la réponse à ton pb mais par contre il faut toujours éviter de charger une image pendant l'affichage; vu que l'affichage doit être le + rapide possible, un accès disque tue les perfs :(
Faut charger l'image une seule fois et l'afficher ensuite.

Patience et longueur de temps font plus que force
ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/
0
yugiohjcj Messages postés 26 Date d'inscription samedi 3 juillet 2004 Statut Membre Dernière intervention 18 août 2004
11 août 2004 à 21:33
Ok...Quelqu'un d'autre a LA solution?

/*Acheter, Vendre, Echanger des cartes Yu-Gi-Oh! Jeu de Cartes à Jouer sur yugiohjcj.free.fr*/
0
essirc Messages postés 48 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 26 juillet 2005 3
11 août 2004 à 23:10
Vérifies que l'image que tu essaies de charger est bien dans le répertoire d'exécution de ton programme.

Ca semble bête comme ça, mais on a souvent des surprises quand on exécute un programme en mode Debug depuis un environnement de développement.
0
yugiohjcj Messages postés 26 Date d'inscription samedi 3 juillet 2004 Statut Membre Dernière intervention 18 août 2004
12 août 2004 à 02:47
"quand on exécute un programme en mode Debug depuis un environnement de développement" <== Oui mais moi j'utilise bloc-notes et le compilateur minGW...C'est vraiement basic :-D
Je pense que ça doit venir des x et y et h et w qu'il faut attribuer une valeure...C'est surement pour ça qu'elle ne s'affiche pas.

/*Acheter, Vendre, Echanger des cartes Yu-Gi-Oh! Jeu de Cartes à Jouer sur yugiohjcj.free.fr*/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yugiohjcj Messages postés 26 Date d'inscription samedi 3 juillet 2004 Statut Membre Dernière intervention 18 août 2004
12 août 2004 à 23:24
=>C'est étrange car maintenant, mes stderr.txt et stdout.txt n'apparaissent que lorque le programme est ouvert puis disparaisse quand il est fermé.
Peut-être parce qu'avant, je fermais le programme avec Ctrl+Alt+Suppr et le programme ne pouvait pas supprimer ces fichiers en se fermant.
=>Je viens de me rendre compte que c'est normal qu'aucun bitmap appraissent à cause d'une boucle while que j'avais laissé lol. Le problème va être certainement résolu maintenant que g pris concience de cette erreur.
/*Acheter, Vendre, Echanger des cartes Yu-Gi-Oh! Jeu de Cartes à Jouer sur yugiohjcj.free.fr*/
0
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
13 août 2004 à 00:53
Content que t'aies trouvé :)
En ce qui concerne stdout.txt et stderr.txt SDL les crée par défaut et ne les supprime que si tu n'as rien écrit dessus; si tu fais un printf() ben stdout.txt restera.

Patience et longueur de temps font plus que force
ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/
0
yugiohjcj Messages postés 26 Date d'inscription samedi 3 juillet 2004 Statut Membre Dernière intervention 18 août 2004
13 août 2004 à 02:15
Waw j'ai trouvé un super site et grâce à lui je suis arrivé à afficher les BMP.
Pour les newbies en SDL c'est vraiement génial!
http://vally8.free.fr/coinprog/sdl/tut2/image.php
/*Acheter, Vendre, Echanger des cartes Yu-Gi-Oh! Jeu de Cartes à Jouer sur yugiohjcj.free.fr*/
0
yugiohjcj Messages postés 26 Date d'inscription samedi 3 juillet 2004 Statut Membre Dernière intervention 18 août 2004
16 août 2004 à 15:05
Autrement, si le fichier .bmp ne se trouve pas dans le même dossier que l'executable, sous windows, j'ai essayé ça mais ça marche pô:
"..\\bmp\\icone.bmp"
Une idée?

/*Acheter, Vendre, Echanger des cartes Yu-Gi-Oh! Jeu de Cartes à Jouer sur yugiohjcj.free.fr*/
0
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
17 août 2004 à 14:00
Le sigle ".." représente le répertoire parent de celui où se trouve l'exécutable (du moins, le répertoire parent par rapport au répertoire actuel, ce serait plus juste ^^).
Donc si t'as ton exe dansmon_prog/exe/mon_exe.exe par exemple, tu peux créer mon_prog/bmp/icone.bmp, ça sera ouvert par ton prog.
Un truc aussi, si tu vises la portabilité (tant qu'à faire, puisque tu utilises SDL...;)) il vaut mieux utiliser "/" plutôt que "\"; car "/" est supporté sur Linux et autres UNIXs comme Windows, alors que "\" ne l'est que sur Windows.

@++

---------------------------------------------------------
Patience et longueur de temps font plus que force ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/
Un concours de prog graphique, ça vous dit? c'est sur Coder-Studio : http://www.coder-studio.com/forums/index.php?showtopic=64
0
yugiohjcj Messages postés 26 Date d'inscription samedi 3 juillet 2004 Statut Membre Dernière intervention 18 août 2004
17 août 2004 à 16:37
>Le sigle ".." représente le répertoire parent de celui où se trouve l'exécutable (du moins, le répertoire parent par rapport au répertoire actuel, ce serait plus juste ^^).

Ah ok et donc celui pour revenir à un répertoire inférieur c'est quoi?

>Donc si t'as ton exe dansmon_prog/exe/mon_exe.exe par exemple, tu peux créer mon_prog/bmp/icone.bmp, ça sera ouvert par ton prog.

Oui c'est bien ça: Monprog>bin>prog.exe , Monprog>src>prog.c, Monprog>bmp>image.bmp, ...Mais j'ai essayé d'ouvrir en enlevant ".." mais ça marche toujours pas.

>Un truc aussi, si tu vises la portabilité (tant qu'à faire, puisque tu utilises SDL...;)) il vaut mieux utiliser "/" plutôt que "\"; car "/" est supporté sur Linux et autres UNIXs comme Windows, alors que "\" ne l'est que sur Windows.

OK merci je ne savais pas que ça marchait sous Windaube d'utiliser le "/".

/*Acheter, Vendre, Echanger des cartes Yu-Gi-Oh! Jeu de Cartes à Jouer sur yugiohjcj.free.fr*/
0
yugiohjcj Messages postés 26 Date d'inscription samedi 3 juillet 2004 Statut Membre Dernière intervention 18 août 2004
17 août 2004 à 16:40
Pour ouvrir le BMP j'ai aussi essayé en mettant juste le nom de l'image "image.bmp" mais bien sûr ça ne marche pas non plus.
Quel est le chemin que je dois écrire?

/*Acheter, Vendre, Echanger des cartes Yu-Gi-Oh! Jeu de Cartes à Jouer sur yugiohjcj.free.fr*/
0
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
17 août 2004 à 20:23
">Le sigle ".." représente le répertoire parent de celui où se trouve l'exécutable (du moins, le répertoire parent par rapport au répertoire actuel, ce serait plus juste ^^).

Ah ok et donc celui pour revenir à un répertoire inférieur c'est quoi?"

-> ben, ce que t'appelles le "répertoire inférieur", ça doit être ce que j'appelle le "répertoire parent" lol

Si tu dis juste "image.bmp" il cherchera dans le répertoire de l'exe (répertoire d'exécution), si tu dis dans "data/image.bmp" il cherchera dans un répertoire data qui sera dans le même répertoire que l'exe...
Si par contre, t'as un répertoire "mon_prog", dans ce répertoire t'as "bin", et dans "bin" t'as "prog.exe", si depuis l'exe tu veux ouvrir "mon_prog/data/image.bmp" faut faire "../data/image.bmp"

Je vois pas comment être plus clair...

---------------------------------------------------------
Patience et longueur de temps font plus que force ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/
Un concours de prog graphique, ça vous dit? c'est sur Coder-Studio : http:
0
yugiohjcj Messages postés 26 Date d'inscription samedi 3 juillet 2004 Statut Membre Dernière intervention 18 août 2004
17 août 2004 à 20:28
Bah alors c'était bon...
Regarde:
"..\\bmp\\icone.bmp"
C'était ce que je faisais avant.
Bon que je remplace "\" par "/" de toutes façon c'est la même chose. Il n'arrive pas à acceder à l'image.
C'est chelou.

Remarque: Au fait, la situation de mon programme est celle là:
"Si par contre, t'as un répertoire "mon_prog", dans ce répertoire t'as "bin", et dans "bin" t'as "prog.exe", si depuis l'exe tu veux ouvrir "mon_prog/data/image.bmp" faut faire "../data/image.bmp"
"
/*Acheter, Vendre, Echanger des cartes Yu-Gi-Oh! Jeu de Cartes à Jouer sur yugiohjcj.free.fr*/
0
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
18 août 2004 à 20:14
Tu mélangeras pas les "/" et les "\" par hasard?
Sinon je vois pas, envoie-moi à funto at nomade.fr si c'est pas ça...

---------------------------------------------------------
Patience et longueur de temps font plus que force ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/
Un concours de prog graphique, ça vous dit? c'est sur Coder-Studio : http:
0
yugiohjcj Messages postés 26 Date d'inscription samedi 3 juillet 2004 Statut Membre Dernière intervention 18 août 2004
18 août 2004 à 22:25
Comment ça?
Je ne confond pas.
"\" et "/" ça revient au même.
Bon pas grâve de toute façon je peux organiser mon dossier d'une autre manière.
Par exemple l'executable dans:
MonProg
Les images dans:
MonProg/Images
Et là ça marche.
Dommage...J'aurai bien aimé que les executables se place dans un dossier "bin".

/*Acheter, Vendre, Echanger des cartes Yu-Gi-Oh! Jeu de Cartes à Jouer sur yugiohjcj.free.fr*/
0
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
18 août 2004 à 22:42
Ben non abandonne pas, envoie-moi le projet...

---------------------------------------------------------
Patience et longueur de temps font plus que force ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/
Un concours de prog graphique, ça vous dit? c'est sur Coder-Studio : http://www.coder-studio.com/forums/index.php?showtopic=64
0
yugiohjcj Messages postés 26 Date d'inscription samedi 3 juillet 2004 Statut Membre Dernière intervention 18 août 2004
18 août 2004 à 23:56
OK...Pour l'instant je viens de repasser sous GNU/Linux.
J'essais déjà de recompiler mon programme sous cet OS.

/*Acheter, Vendre, Echanger des cartes Yu-Gi-Oh! Jeu de Cartes à Jouer sur yugiohjcj.free.fr*/
0
Rejoignez-nous