Función IMG_Load_RW
Sintaxis
SDL_Surface * IMG_Load_RW(SDL_RWops *src, int freesrc);
Descripción
Carga una imagen de una fuente de datos SDL en una superficie de software.
Parámetros
- src
- Un SDL_RWops del que se leerán los datos.
- freesrc
- Distinto de cero para cerrar/liberar el SDL_RWops antes de volver, cero para dejarlo abierto.
Valor de retorno
Devuelve una nueva superficie SDL, o NULL en caso de error.
Observaciones
Una SDL_Surface es un buffer de píxeles en memoria accesible por la CPU. Utilizarlo si se planea pasar los datos a otra cosa o manipularlos posteriormente en código.
No hay garantías sobre qué formato tendrán los nuevos datos de SDL_Surface; en muchos casos, SDL_image intentará proporcionar una superficie que coincida exactamente con la imagen proporcionada, pero en otros puede que tenga que convertirla (ya sea porque la imagen está en un formato que SDL no soporta directamente o porque son datos comprimidos que podrían descomprimirse razonablemente a varios formatos y SDL_image tuvo que elegir uno). Puede inspeccionar una SDL_Surface para conocer sus características específicas y utilizar SDL_ConvertSurface para migrarla a cualquier formato compatible.
Si el formato de imagen soporta un píxel transparente, SDL establecerá la clave de color para la superficie. Después se puede activar la aceleración RLE en la superficie llamando a: SDL_SetColorKey(image, SDL_RLEACCEL, image->format->colorkey);
Si freesrc es distinto de cero, el RWops se cerrará antes de volver, tanto si esta función tiene éxito como si no. En cualquier caso, SDL_image lee todo lo que necesita de los RWops durante esta llamada.
Existe una función separada para leer archivos del disco sin tener que lidiar con SDL_RWops: IMG_Load("nombrearchivo.jpg") llamará a esta función y gestionará esos detalles, determinando el tipo de archivo a partir de la extensión del nombre del archivo.
También existe IMG_LoadTyped_RW(), que es equivalente a esta función excepto en que se puede especificar una extensión de archivo (como "BMP", "JPG", etc), en caso de que SDL_image no pueda detectar automáticamente el formato de archivo.
Si se está utilizando la API de renderizado 2D de SDL, existe una llamada equivalente para cargar imágenes directamente en una SDL_Texture para su uso por la GPU sin utilizar una superficie de software: llamar a IMG_LoadTexture_RW() en su lugar.
Cuando se termine de utilizar la superficie devuelta, la aplicación debe deshacerse de ella con una llamada a SDL_FreeSurface().