begin process at 2008 09 05 13:46:27
1 237 231 membres
186 nouveaux aujourd'hui
14 313 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Problème avec SDL_SetColorKey [ Archives / Multimédia ] (The_Sin)

Problème avec SDL_SetColorKey le 01/08/2005 16:22:04

The_Sin
Voici mon code :


#include <SDL/SDL.h>

SDL_Surface * sEcran ;
SDL_Surface * sImage ;

void init()
{
    SDL_Init(SDL_INIT_VIDEO) ;
    sEcran = SDL_SetVideoMode(800, 600, 32,SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_FULLSCREEN) ;
    SDL_ShowCursor(0) ;

    sImage=SDL_LoadBMP("img.bmp") ;
    SDL_SetColorKey(sImage, SDL_SRCCOLORKEY, SDL_MapRGB(sImage->format,0,0,0)) ;

}

void Quit()
{
    SDL_FreeSurface(sImage) ;
    SDL_FreeSurface(sEcran) ;
    SDL_ShowCursor(1) ;
    SDL_Quit() ;

    exit(0) ;
}

int main(int argc, char *argv[])
{

    init() ;

    int up = 0 , down = 0, right = 0 , left = 0 ;

    SDL_Event event ;
    SDL_Rect rect, dest ;

    rect.x = 0 ;
    rect.y = 0 ;
    rect.w = 80 ;
    rect.h = 80 ;

    dest.x = 360 ;
    dest.y = 260 ;
    dest.w = 80 ;
    dest.h = 80 ;

    while(true)
       {
        while(SDL_PollEvent(&event))
           {
            if(event.type==SDL_QUIT)
               {
                Quit();
               }
            else if(event.type==SDL_KEYDOWN)
               {
                if(event.key.keysym.sym==SDLK_ESCAPE)
                   Quit() ;
               }
           }


       SDL_FillRect(sEcran,NULL,SDL_MapRGB(sEcran->format,8,63,15)) ;
       SDL_BlitSurface(sImage,&rect,sEcran,&dest) ;
       SDL_FillRect(sEcran,&rect,SDL_MapRGB(sEcran->format,4,63,55)) ;

       SDL_Flip(sEcran);

       }

    return 0 ;

}

Le code marche bien mais quand je met
SDL_SetColorKey(sImage, SDL_SRCCOLORKEY, SDL_MapRGB(sImage->format,0,0,0)) ;
le programme se lance et quitte, je comprend pas d'où vient le pbsurtout que sans cette commande le prog marche correctement...
Merci d'avance pour l'aide que vous pourrais me fournir

Re : Problème avec SDL_SetColorKey le 04/08/2005 02:59:26

bathof
Salut,

A mon avis l'image n'a pas été chargé correctement car l'emplacement n'existe pas ou le BMP est invalide.

je te conseils donc de faire plus de test, je m'explique :

Tu init' les variables comme cela :

SDL_Surface * sEcran  = NULL;
SDL_Surface * sImage = NULL;
pour eviter les pointeurs "flottant".

ensuite test si sdl est init' correctement :

if( SDL_Init(DL_INIT_VIDEO) == -1 ) {
 printf("Erreur l'hors de l'initalisation de la SDL\n");
 exit(0);
}

et à chaques fois que tu charges une image test si elle a été chargée correctement comme cela :

SDL_LoadBMP("img.bmp",sImage);
if( sImage == NULL ) {
 printf("Erreur l'hors du chargement de img.bmp\n");
 exit(0);
}

Bonne chance et a +.


Classé sous : rect, sdl, event, secran, simage

Participer à cet échange

Pub



Appels d'offres

Recherche developpeur ...
Budget : 700€
SITE MARCHAND LOCATION...
Budget : 3 000€
SITE MARCHAND POUR HOTEL
Budget : 4 000€

Snippets en rapport

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Boutique

Boutique de goodies CodeS-SourceS