Crea Superficie en SDL

Tratamos sobre el manejo de APIs frecuentemente utilizadas en el desarrollo de videojuegos, como SDL, pygame o SFML.

Crea Superficie en SDL

Notapor Juan Carlos » Mar Jul 10, 2007 1:34 pm

Hola, queria saber como crear una superficie en SDL. Se como cargar una imagen y mostrarla en pantalla pero lo que yo quiero es un simple rectangulo de un solo color para luego pegar en él otras superficies.

Saludos
Juan Carlos
 
Mensajes: 97
Registrado: Sab Jul 07, 2007 1:05 pm

Notapor hugoruscitti » Mar Jul 10, 2007 7:40 pm

Podrías utilizar la función CreateRGBSurface:

http://www.libsdl.org/cgi/docwiki.cgi/S ... RGBSurface

el procedimiento sería similar al que utilizas cuando generas una
superficie desde un archivo BMP, solo que aquí debes especificar
el tamaño de la imagen y otros parámetros que puedes extraer
desde otra superficie como "screen".

Buena suerte.
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

Notapor Juan Carlos » Mar Jul 10, 2007 8:50 pm

Hola, hice lo que muestra el ejemplo
Código: Seleccionar todo
SDL_Surface *imagen;
Uint32 rmask, gmask, bmask, amask;
    rmask = 0xff000000;
    gmask = 0x00ff0000;
    bmask = 0x0000ff00;
    amask = 0x000000ff;

imagen=SDL_CreateRGBSurface(SDL_HWSURFACE, 100, 100, 24, rmask,gmask,bmask,amask);


luego imprimi la imagen y no sucede nada. Luego sustitui amask por 0 en la funcion SDL_CreateRGBSurface y logre obtener un rectangulo negro pero no se como cambiar de color.

Saludos
Juan Carlos
 
Mensajes: 97
Registrado: Sab Jul 07, 2007 1:05 pm

Notapor rcaf » Mié Jul 11, 2007 1:31 am

Hola:

Te dejo una función que hice hace un tiempo, y genera una superficie de cualquier tamaño y con el mismo formato de la pantalla actual, en la memoria de video. Luego limpia la superficie completa de color negro.

Código: Seleccionar todo
SDL_Surface *CreateSurface(int w, int h)
{
    const SDL_VideoInfo *vi=SDL_GetVideoInfo();

    SDL_Surface *surface=SDL_CreateRGBSurface(SDL_HWSURFACE, w, h,
                         vi->vfmt->BitsPerPixel,
                         vi->vfmt->Rmask, vi->vfmt->Gmask,
                         vi->vfmt->Bmask, vi->vfmt->Amask);

    SDL_FillRect(surface, 0, 0);

    return surface;
}
Roberto Albornoz Figueroa
Mi Blog
Wiki
Avatar de Usuario
rcaf
 
Mensajes: 71
Registrado: Jue Ago 10, 2006 4:35 am
Ubicación: Concepción, Octava Región. Chile

Notapor Juan Carlos » Jue Jul 12, 2007 7:28 pm

Muchisimas gracias, ahora funciona todo bien.
Juan Carlos
 
Mensajes: 97
Registrado: Sab Jul 07, 2007 1:05 pm

Tengo una pregunta

Notapor jeisson » Vie Ago 24, 2007 1:49 pm

Quiero que me ayuden a resolver una duda,
Resulta que soy un principiante en esto del SDL y he estado leyendo los primeros 3 tutoriales de una pagina llamada lazyfoo. Ocurre que para mostrar una imagen hay que declarar e implementar un par de funciones manualmente y yo tratè de poner esas dos funciones en una clase, asì nada mas tendria que incluir el .h y llamar a esas funciones. Pero ocurre que me sale una serie de errores que me tienen la vida triste son estos.

19 F:\proyecto SDL compilado\imagen.h expected init-declarator before '*' token

19 F:\proyecto SDL compilado\imagen.h expected `,' or `;' before '*' token

44 F:\proyecto SDL compilado\imagen.h prototype for `void imagen::apply_surface(int, int, SDL_Surface*, SDL_Surface*)' does not match any in class `imagen'

:cry: :cry: :cry:
jeisson
 
Mensajes: 1
Registrado: Jue Ago 23, 2007 11:30 pm


Volver a Sobre las bibliotecas multimedia

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron