| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
alexguerra
Registrado: 15 Jun 2007 Mensajes: 10
| Publicado: 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
| Publicado: 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
| Publicado: 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
| Publicado: 19/06/2007 4:51 pm | | | Título: |
| Hola, te detecte los siguientes errores:
Donde dice debe decir | Código: | if(screen == NULL) | Y donde dice debe decir
Saludos
PD: Por favor pon tu codigo encerrado en las etiquetas [ code] y [ /code] asi es mas facil leer el codigo. |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |