Je suis le cours sur le langage C et j'ai des soucis avec la partie SDL.
Voici le code qui pose problème :
#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
#undef main
int pause();
int main(int argc, char *argv[])
{
// création du pointeur screen qui correspond à l'écran
SDL_Surface *screen = NULL;
// initialisation de SDL
SDL_Init(SDL_INIT_VIDEO);
// on défini ce qu'est le pointeur screen
screen = SDL_SetVideoMode(640, 480, 8, SDL_HWSURFACE);
// création de la couleur rouge
Uint32 rouge = SDL_MapRGB(screen->format, 255, 0, 0);
// on colorie l'écran en rouge
SDL_FillRect(screen, NULL, rouge);
// mise à jour de l'écran
SDL_Flip(screen);
// Mise en place d'un titre
SDL_WM_SetCaption("Ma fenêtre rouge", NULL);
// pause avec fonction bidouillée
pause();
// fin de SDL
SDL_Quit();
return EXIT_SUCCESS;
}
int pause()
{
int continuer = 1;
SDL_Event event;
while (continuer)
{
SDL_WaitEvent(&event);
switch(event.type)
{
case SDL_QUIT:
continuer = 0;
}
}
return 0;
}
Pour faire fonctionner le tout j'ai dû ajouter un #undef main (dont je n'ai pas encore bien compris l'utilité) et changer la fonction pause car avec le type void donné dans le cours ça me faisait systématiquement une erreur de type. Je ne pense pas que ces deux points puisse causer le problème qui suit mais je préfère les signaler.
Mon problème est que la fenêtre que je génère ainsi reste désespérément grise (couleur par défaut sous mon OS). J'ai essayé en 32 bits et en 8 ; j'ai essayé sans définir explicitement la couleur dans une variable, j'ai essayé de faire varier les valeurs du RGB. Le tout sans succès.
Après avoir trouvé un PC il s'avère que le code fonctionne.
En passant en SDL2 cela fonctionne sur mon Mac. Seule explication rationnelle qui me vienne à l'esprit c'est que Mac OS + Xcode sont fâchés avec la SDL1.2.
En passant en SDL2 cela fonctionne sur mon Mac. Seule explication rationnelle qui me vienne à l'esprit c'est que Mac OS + Xcode sont fâchés avec la SDL1.2.
Si tu avais dit tout de suite que tu travailais avec osx, je t'aurais dit que c'était un problème connu: osx et sdl 1.x ne font pas bon ménage au niveau des couleurs.
A+
Edgar;
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent