Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: AlexHdez en 10 de Mayo de 2004, 04:06:50 PM

Título: Mas Problemes En Sdl
Publicado por: AlexHdez en 10 de Mayo de 2004, 04:06:50 PM
 Buenas, siento molestarles de nuevo, pero tengo mas problemas en tiempo de ejecución que no se abordar, :(

Os copio la parte del codigo que falla:

SS2DL.h

class Frame

{

public:

SDL_Surface *frame;
SDL_Surface *InitFrame;
void FUnLoad();
void FLoad(char *path, int x, int y, int h, int w);

};


SS2DL.cpp

void Frame::FLoad(char *path, int x, int y, int h, int w)

{

SDL_Rect inicio;

inicio.x = x;
inicio.y = y;
inicio.h = h;
inicio.w = w;

InitFrame = IMG_Load(path);
SDL_BlitSurface(InitFrame, &inicio, frame, NULL); ------------------------> Aqui falla, access violation
SDL_SetColorKey(frame, SDL_SRCCOLORKEY | SDL_RLEACCEL, SDL_MapRGB(frame->format,255,0,0));
frame = SDL_DisplayFormat(frame);

}


Puede que sea una chorrada pero llevo dos horas dandole vueltas.

Gracias de antemano

Un saludo
Título: Mas Problemes En Sdl
Publicado por: sés en 10 de Mayo de 2004, 04:14:46 PM
 Cuando haces el "blit", frame aun no ha sido inicializado.
Título: Mas Problemes En Sdl
Publicado por: AlexHdez en 10 de Mayo de 2004, 04:17:04 PM
 Como inicializado? frame es una superficie, y se inicia en SDL_Surface *frame; no? si no es asi corregidme please.

Un saludo
Título: Mas Problemes En Sdl
Publicado por: sés en 10 de Mayo de 2004, 04:31:12 PM
 
Cita de: "AlexHdez"Como inicializado? frame es una superficie, y se inicia en SDL_Surface *frame; no? si no es asi corregidme please.
Fíjate que no es del tipo SDL_Surface, si no un PUNTERO a SDL_Surface.
Con eso lo único que haces es declarar un puntero. Ese puntero puede valer NULL o CUALQUIER COSA, pero no apuntará a nada válido y, mucho menos, a una SDL_Surface.

Las superficies en SDL (si no me falla la memoria) se crean con SDL_CreateSurface(....).
Título: Mas Problemes En Sdl
Publicado por: AlexHdez en 10 de Mayo de 2004, 04:49:42 PM
 void Frame::FLoad(char *path, int x, int y, int h, int w)

{

SDL_Rect inicio;

inicio.x = x;
inicio.y = y;
inicio.h = h;
inicio.w = w;

InitFrame = IMG_Load(path);

frame = SDL_CreateRGBSurface(SDL_HWSURFACE, w, h, 8, 0, 0, 0, 0);

SDL_BlitSurface(InitFrame, &inicio, frame, NULL); ------------------------> Aqui falla, access violation
SDL_SetColorKey(frame, SDL_SRCCOLORKEY | SDL_RLEACCEL, SDL_MapRGB(frame->format,255,0,0));
frame = SDL_DisplayFormat(frame);

}


Sigue dando error, :S
Título: Mas Problemes En Sdl
Publicado por: AlexHdez en 10 de Mayo de 2004, 04:59:36 PM
 Vale ya esta el error ya no esta en esa parte del codigo, sorry y muchas gracias!
Título: Mas Problemes En Sdl
Publicado por: sés en 10 de Mayo de 2004, 05:05:29 PM
 Ok (ole)