IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SDL Discussion :

SDL_FillRect et surface screen.


Sujet :

SDL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de ironzorg
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 288
    Par défaut SDL_FillRect et surface screen.
    Bonjour a tous !

    J'ai un probleme avec mon code ( je ne l'ai pas sous la main pour le moment, mais cela ne change rien car il n'est pas long ), je recois ( Ubuntu ) un seg fault au moment d'utiliser la fonction SDL_FillRect().

    J'ai utilisé le debugger, et en effet c'est cette fonction SDL qui renvoie un seg fault.

    Je pense que ma méthode d'initialisation du screen n'est pas bonne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
     
    bool init( SDL_Surface *screen )
    {
    SDL_Init, etc...
    screen = SDL_SetVideoMode... blah blah blah.
    if( !screen )
    {
    return false;
    }
    return true;
    }
     
    int main( int argc, char *argv[] )
    {
    SDL_Surface *screen = NULL;
    if( !init( screen ) )
    {
    printf( "Error: screen\n" );
    return 1;
    }
     
    ...
    ...
     
    SDL_FillRect( screen );
    }
    Bien sur j'utilise beaucoup de raccourcis dans mon pseudo code, j'ai bel et bien respecté le type/nombre d'arguments des fonctions ( aucun warn du compilo ).

    Je programme sous C::B, sous Hardy Heron.

    Merci.

  2. #2
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par défaut
    Effectivement :p

    Tu changes ta variable screen à l'intérieur de ta fonction init mais la variable screen à l'extérieur de ta fonction n'est pas changée.

    Tu pourrais régler ça comme ça:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    bool init( SDL_Surface **screen )
    {
    SDL_Init, etc...
    *screen = SDL_SetVideoMode... blah blah blah.
    if( !(*screen) )
    {
    return false;
    }
    return true;
    }
     
    int main( int argc, char *argv[] )
    {
    SDL_Surface *screen = NULL;
    if( !init( &screen ) )
    {
    printf( "Error: screen\n" );
    return 1;
    }
     
    ...
    ...
     
    SDL_FillRect( screen );
    }

  3. #3
    Membre confirmé Avatar de ironzorg
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 288
    Par défaut
    Je me disais bien que quelquechose n'allait pas

    En revanche, j'ai un ajutre probleme: dans la meme fonction d'initialisation que celle du screen, j'initialise une surface ( donc la je passe a la fonction l'adresse de la surface, et elle s'initialise bien ).
    Mais: après avoir loadé la surface, j'utilise SetColorKey... Et le compilo me crie dessus en me disant que je ne doit pas passer de pointeur à la fonction ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    bool init( SDL_Surface **src )
    {
    *src=SDL_LoadBMP("./gfx.bmp" );
    if(!(*src))
    {
    printf( "rate\n" );
    return false;
    }
    else
    {
    // Que mettre ici ? pas *icon, pas &icon...
    SDL_SetColorKey( src, SDL_SRCCOLORKEY, SDL_MapRGB( src->format, 0, 0, 0 ) );
            SDL_WM_SetIcon( src, NULL );
    }
    return true;
    }
    EDIT: Merci pour ta réponse, j'ai séché dessus pendant au moins une douzaine d'heures

  4. #4
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par défaut
    Vu que tu as une SDL_Surface **:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SDL_SetColorKey( *src, SDL_SRCCOLORKEY, SDL_MapRGB( (*src)->format, 0, 0, 0 ) );
            SDL_WM_SetIcon( *src, NULL );

  5. #5
    Membre confirmé Avatar de ironzorg
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 288
    Par défaut
    J'avais oublié de mettre les parenthèses pour utiliser le pointeur sur format xD

    Merci beaucoup, résolu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Pygame] rotation de la surface screen
    Par Gavroche7 dans le forum Programmation multimédia/Jeux
    Réponses: 2
    Dernier message: 05/02/2009, 09h49
  2. Taille des surfaces avec DirectDraw
    Par Shakram dans le forum DirectX
    Réponses: 5
    Dernier message: 09/09/2002, 00h42
  3. Sauvegarder une surface dans un fichier
    Par Freakazoid dans le forum DirectX
    Réponses: 6
    Dernier message: 18/08/2002, 15h23
  4. Redimensionnement d'une surface
    Par Freakazoid dans le forum DirectX
    Réponses: 4
    Dernier message: 01/07/2002, 22h01
  5. Opengl -- Les surfaces
    Par Anonymous dans le forum OpenGL
    Réponses: 2
    Dernier message: 02/05/2002, 10h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo