/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Imagen con SDL

 
      Índice del Foro elrincondelc.com -> Gráficos
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
alexguerra



Registrado: 15 Jun 2007
Mensajes: 10

MensajePublicado: 17/06/2007 4:26 am
Título: Imagen con SDL

Perdón por mi error al publicar este mensaje. La verdad es que no me había leído las normas. Custión de impaciencia.

Dicho esto mi pregunta es que estoy introduciéndome en la programación gráfica, tengo conocimientos de c entre otros lenguajes, pero esto es nuevo para mí.

Estoy con un ejemplo en c, utilizando SDL, en DEV-C++, con el sistema operativo Windows Vista (que supongo que es lo malo).

El progama compila y linka perfectamente, pero al ejecutarse sale un pantalla en negro y rapidamente se cierra.

Al depurar me sale un mensaje que dice Violación de un acceso a memoria. (Fallo de segmentación) ocurrió en tu programa.

El código es el siguiente:


#include <stdio.h>
#include <stdlib.h>
#include <SDL/SDL.h>
#include <SDL_image.h>



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

SDL_Surface *image, *screen;
SDL_Rect dest;
SDL_Event event;
int done = 0;









// iniciamos SDL

if (SDL_Init(SDL_INIT_VIDEO) < 0) {
printf("No se pudo iniciar SDL: %s\n", SDL_GetError());
exit(1);

}
// activamos modo video

screen = SDL_SetVideoMode(640,480,24,SDL_HWSURFACE | SDL_DOUBLEBUF);
if (screen = NULL) {
printf("No se puede iniciar el modo grafico: \n",SDL_GetError());
exit(1);

}

// cargamos grafico



image = SDL_LoadBMP("tio.bmp");
if (image == NULL) {
printf("No se pudo cargar la imagen: %s\n", SDL_GetError());
exit(1);

}

// definimos donde dibujamos la imagen

dest.x = 0;
dest.y = 0;
dest.w = image->w;
dest.h = image->h;
SDL_BlitSurface(image, NULL, screen, &dest);

// mostramos la pantalla
SDL_Flip(screen);



// liberamos la superficie

SDL_FreeSurface(image);

// esperamos la pulsacion de una tecla
while(done == 0) {
while ( SDL_PollEvent(&event) ) {
if ( event.type == SDL_KEYDOWN )
done = 1;

}

}
SDL_Quit;
return 0;
}


necesito respuestas para no estancarme gracias y mil perdones por no haberme leído antes las normas.
Volver arriba
Killrazor



Registrado: 24 Ene 2006
Mensajes: 1182
Ubicación: Barcelona

MensajePublicado: 17/06/2007 11:26 pm
Título:

Prueba a compilar el mismo programa en XP y si falla, entonces es el Vista
_________________
I wanna heal i wanna feel like I'm close to something real.
I wanna find something I've wanted all along
somewhere i belong
Volver arriba
alexguerra



Registrado: 15 Jun 2007
Mensajes: 10

MensajePublicado: 18/06/2007 1:27 pm
Título:

Gracias por la respuesta. No sé como pero poniéndolo todo en un mismo código. Sin hacer llamadas a rutinas. Me funciona. A veces esto hace cosas raras. Aún así mil gracias.
Volver arriba
_Martin_



Registrado: 03 Ago 2006
Mensajes: 165

MensajePublicado: 19/06/2007 4:51 pm
Título:

Hola, te detecte los siguientes errores:

Donde dice
Código:
if(screen = NULL)
debe decir
Código:
if(screen == NULL)
Y donde dice
Código:
SDL_Quit
debe decir
Código:
SDL_Quit();


Saludos

PD: Por favor pon tu codigo encerrado en las etiquetas [ code] y [ /code] asi es mas facil leer el codigo.
Volver arriba
      Índice del Foro elrincondelc.com -> Gráficos
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com