Visualizzazione risultati 1 fino 1 di 1

Discussione: [C - SDL] inizializzare una SDL_Surface

  1. #1
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,752

    Predefinito [C - SDL] inizializzare una SDL_Surface

    Salve.

    Non riesco a capire come "inizializzare" una superficie sdl, senza caricare una immagine.

    Ad esempio, se voglio creare una superficie rettangolare (ad esempio, rossa), senza prima caricare nessuna immagine, mi da un segmention fault.

    Ecco un esempio:

    Codice:
    //librerie
    
    int main(int argc, char *argv[])
    {
         SDL_Surface *piano;
         SDL_Rect rettangolo_sfondo;
    
        //inizializzazioni SDL e altro...
    
       rettangolo_sfondo.x = 0;
       rettangolo_sfondo.y = 0;
       rettangolo_sfondo.w = 100;
       rettangolo_sfondo.h = 30;
        
       SDL_FillRect(piano, &rettangolo_sfondo, SDL_MapRGB(piano->format, 0xFF, 0, 0));
    
       //uso il piano..ad esempio lo salvo
       SDL_Save_BMP(piano,"piano.bmp");
    
      //...oppure lo mostro a schermo (dopo, naturalmente, aver settato la variabile screen opportunamente
    
      SDL_BlitSurface(piano, NULL, screen, NULL);
      SDL_Flip(screen);
      SDL_Delay(2000);  //aspetto 2 secondi, per vedere il risultato
      return 0;
    }
    ..il programma sopra non l'ho nemmeno provato, perché in realtà è molto più complesso.. è soltanto per far capire il problema...

    Ovvero: in quel programma, se lo eseguissi, verrebbe un segmention fault all SDL_Save_BMP() oppure alla DFL_Flip() (anzi, credo direttamente alla SDL_BlitSurface()!)

    ...Il problema, invece, non c'é se *piano la inizializzo con una immagine caricata (ad esempio, con la SDL_LoadBMP()....


    ..il problema non si risolve nemmeno con l'uso della SDL_DisplayFormat()

    Grazie,
    Ciao!
    Ultima modifica di alemoppo : 23-05-2010 alle ore 12.26.29

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •