Artículos :: LTK demos ::

:: Mostrando imágen BMP por pantalla ::


[Comentarios al código]

El objetivo de este código no es otro que el de presentar en pantalla una imagen con formato BMP, la cual esta alojada en la raíz de la SMC (gp:\\). Nótese que el separador de directorios es \\, así para mostrar un BMP alojado en gpmm, la ruta sería tal que así: gp:\\gpmm\\nave.bmp

Puedes descargar, tanto el código fuente como el ejetuable en el área de descargas, o bien aquí: Código fuente - Ejecutable

#include <gpstdio.h>
#include <gpstdlib.h>
#include <gpgraphic.h>
#include <gpfont.h>
#include <stdio.h>
#include <stdlib.h>
#include <SDL.h>

void GpMain(void *argv)
{
    SDL_Surface *image, *screen;
  SDL_Rect dest;
  SDL_Event event;
  int done = 0;

    atexit(SDL_Quit);

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

    // Activamos modo de video
    screen=SDL_SetVideoMode(320,240,8,SDL_HWSURFACE|SDL_DOUBLEBUF);
    if (screen == NULL) {
       printf("No se puede inicializar el modo gr?fico: \n",SDL_GetError());
       exit(1);
    }


    // Cargamos gr?fico
    image = SDL_LoadBMP("gp:\\nave.bmp");
    if ( image == NULL ) {
        printf("No pude cargar gr?fico: %s\n", SDL_GetError());
        exit(1);
    }

    // Definimos donde dibujaremos el gr?fico
    // y lo copiamos a la pantalla.
    dest.x = 10;
    dest.y = 10;
    dest.w = image->w;
    dest.h = image->h;
    SDL_BlitSurface(image, NULL, screen, &dest);

    // Mostramos la pantalla
    SDL_Flip(screen);

    // liberar superficie
    SDL_FreeSurface(image);


    // Esperamos la pulsaci?n de una tecla para salir
    while(done == 0) {
       while ( SDL_PollEvent(&event) ) {
          if ( event.type == SDL_KEYDOWN )
             done = 1;
    }
    }

    return 0;
}
[Módificaciones]

El objetivo de este código no es otro que el de presentar en pantalla una imagen con formato BMP, la cual esta alojada en la raíz de la SMC (gp:\\). Nótese que el separador de directorios es \\, así para mostrar un BMP alojado en gpmm, la ruta sería tal que así: gp:\\gpmm\\nave.bmp
    // Cargamos gráfico
    image = SDL_LoadBMP("gp:\\nave.bmp");
      if ( image == NULL ) {
          printf("No pude cargar gráfico: %s\n", SDL_GetError());
          exit(1);
      }
Sustituimos la anterior porción de código por la que continua.
    // Cargamos gráfico
    image = IMG_Load_RW(SDL_RWFromMem(&nave,7794),0);
    if ( image == NULL ) {
        printf("No pude cargar gráfico: %s\n", SDL_GetError());
        exit(1);
    }
De este modo vamos a cargar el gráfico, el cual ya no está como fichero gp:\\nave.bmp sino que está incluido en el propio ejecutable.

Para incluirlo en el ejecutable además debemos añaadir #include "data.h" al inicio del archivo, siendo data.h el archivo que contiene la imágen a mostrar pero convertida a binario.

Para convertir la imagen a binario usaremos el Gp Bin Converter de Aquafish
tras la conversión debemos observar, abriendo el archivo .h que hayamos creado, cual es el nombre y el peso, para así poder indicarlo en el código, veamos el ejemplo:

Abrimos el archivo data.h con un editor y vemos que:
    const unsigned char nave[7794] =
De la linea anterior sale la información para hacer la sustitucion realizada anteriormente.
    image = IMG_Load_RW(SDL_RWFromMem(&nave,7794),0);

 

 

 

       Principal

· Inicio
· Artículos
· GP32
· Dreamcast
· Proyectos
· Descargas
· Enlaces
 

GP32 official webpage

 Contacto | GP32Spain | SDL Libs

Chui gracias por portal SDL a la GP32!!