User Tag List

Resultados 1 al 6 de 6

Tema: Uso de SDL_ConvertSurface

  1. #1

    Fecha de ingreso
    Jan 2008
    Ubicación
    Sevilla
    Mensajes
    432
    Mencionado
    3 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    56
    Agradecer Thanks Received 
    35
    Thanked in
    Agradecido 10 veces en [ARG:2 UNDEFINED] posts

    Uso de SDL_ConvertSurface

    Buenas a todos,

    Estoy haciendo una pequeña actualización de mi programita de dibujo, y estoy teniendo problemas con la interpretacion de los colores. Os pongo en situación...

    Como no domino demasiado el tema de los colores (32 bits, 16, colores indexados...) he decidido trabajar sólo con 24 bits, por lo que inicialmente creo una imagen de 24 bits de la siguiente forma:

    Código:
    #if SDL_BYTEORDER == SDL_BIG_ENDIAN
        #define RMASK 0xff0000
        #define GMASK 0x00ff00
        #define BMASK 0x0000ff
    #else
        #define RMASK 0x0000ff
        #define GMASK 0x00ff00
        #define BMASK 0xff0000
    #endif
    
    canvas->image = SDL_CreateRGBSurface(SDL_SWSURFACE, width, height, 24, RMASK, GMASK, BMASK, 0);
    Cuando cargo cualquier imagen directamente le hago lo siguiente para pasarla a 24 bits:
    Código:
    SDL_Surface* formated_image = SDL_ConvertSurface(new_image, _canvas->image->format, 0);
    La imagen no se muestra correctamente, aparece con los colores cambiado, ¿alguien sabe así a bote pronto qué estoy haciendo mal?

    Desde ya gracias
    < - >
    Añado que aunque la imagen no se muestra correctamente, si la guardo sí que se guarda con los colores que tenía la imagen original.
    Última edición por turco; 28/12/2011 a las 21:35 Razón: Edición automática anti doble-post.

  2. #2

    Fecha de ingreso
    Apr 2007
    Ubicación
    Anoeta
    Mensajes
    5,508
    Mencionado
    41 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    12
    Agradecer Thanks Received 
    100
    Thanked in
    Agradecido 70 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    27
    creo que el problema es que aunque cambies el surface a 24 bits, luego si cargas una imagen de 8 bits indexada de da por el culete... para ello lo mejor seria convertir la imagen a cargar antes de ponerla en el surface...

    con la siguiente funcion la imagen pasa al formato de la pantalla... si la pantalla esta a 24 bits... bingo!



    Sacado de Lazyfoo

    SDL_Surface *load_image( std::string filename )
    {
    //The image that's loaded
    SDL_Surface* loadedImage = NULL;

    //The optimized image that will be used
    SDL_Surface* optimizedImage = NULL;

    //Load the image using SDL_image
    loadedImage = IMG_Load( filename.c_str() );

    //If the image loaded
    if( loadedImage != NULL )
    {
    //Create an optimized image
    optimizedImage = SDL_DisplayFormat( loadedImage );

    //Free the old image
    SDL_FreeSurface( loadedImage );
    }

    //Return the optimized image
    return optimizedImage;
    }

    RESUMIENDO: no cambies el formato del surface... cambia el de la imagen, que seguro que es mas facil...

    POr cierto, que tal el pack de comics?
    Última edición por Jurk; 28/12/2011 a las 21:45

  3. #3

    Fecha de ingreso
    Jan 2008
    Ubicación
    Sevilla
    Mensajes
    432
    Mencionado
    3 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    56
    Agradecer Thanks Received 
    35
    Thanked in
    Agradecido 10 veces en [ARG:2 UNDEFINED] posts
    Uff el pack de cómics IMpresionante !! Sólo los he podido ver a la carrera y tendré que esperar un poco para disfrutarlos, pero me ha encantado

    Con respecto a lo de la imagen, no conocía la función SDL_DisplayFormat(), voy a echarle un vistazo e intentaré hacer lo que me dices.

    Muchas gracias Jurk

  4. #4

    Fecha de ingreso
    Apr 2007
    Ubicación
    Anoeta
    Mensajes
    5,508
    Mencionado
    41 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    12
    Agradecer Thanks Received 
    100
    Thanked in
    Agradecido 70 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    27
    por cierto, si no lo conoces...

    http://lazyfoo.net/SDL_tutorials/index.php

  5. #5

    Fecha de ingreso
    Jan 2008
    Ubicación
    Sevilla
    Mensajes
    432
    Mencionado
    3 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    56
    Agradecer Thanks Received 
    35
    Thanked in
    Agradecido 10 veces en [ARG:2 UNDEFINED] posts


    Bueno pues con el uso de la función SDL_DisplayFormat() ya se muestrán correctamente las imágenes !! Gracias de nuevo!

  6. #6

    Fecha de ingreso
    Apr 2007
    Ubicación
    Anoeta
    Mensajes
    5,508
    Mencionado
    41 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    12
    Agradecer Thanks Received 
    100
    Thanked in
    Agradecido 70 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    27
    Epic win por mi parte.... cada dia me molo mas

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •