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!