SDL_image.h

Función IMG_LoadTexture_RW

Sintaxis

SDL_Texture * IMG_LoadTexture_RW(SDL_Renderer *renderer, SDL_RWops *src, int freesrc);

Descripción

Carga una imagen de una fuente de datos SDL en una textura GPU.

Parámetros

renderer
El SDL_Renderer a usar para crear la textura GPU.
src
Un SDL_RWops desde serán leídos los datos.
freesrc
Distinto de cero para cerrar o liberar el SDL_RWops antes de regresar, cero para dejarlo abierto.

Valor de retorno

Devuelve una nueva textura o NULL en caso de error.

Observaciones

Una SDL_Texture representa una imagen en la memoria de la GPU, utilizable por la API de Render 2D de SDL. Esto puede ser significativamente más eficiente que usar una SDL_Surface ligada a la CPU si no se necesita manipular la imagen directamente después de cargarla.

Si la imagen cargada tiene transparencia o una clave de color, se creará una textura con un canal alfa. De lo contrario, SDL_image intentará crear una SDL_Texture en el formato que más razonablemente represente los datos de la imagen (pero en muchos casos, esto terminará siendo RGB de 32 bits o RGBA de 32 bits).

Si freesrc es distinto de cero, el RWops se cerrará antes de volver, tanto si esta función tiene éxito como si no. SDL_image lee todo lo que necesita de los RWops durante esta llamada en cualquier caso.

Existe una función separada para leer ficheros del disco sin tener que tratar con SDL_RWops: IMG_LoadTexture(renderer, "filename.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_LoadTextureTyped_RW(), que es equivalente a esta función excepto 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 prefiere decodificar una imagen a una SDL_Surface (un buffer de píxeles en la memoria de la CPU), llamar a IMG_Load() en su lugar.

Cuando se termine con la textura devuelta, la aplicación debe deshacerse de ella con una llamada a SDL_DestroyTexture().